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
- White Label: customize the student dashboard design
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}
6. 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
-
Current lesson data: {lesson.title}, {lesson.slug}, and other lesson fields
-
Conditional blocks @if/@endif: show different content depending on whether the contact has a tag, access to the offer, etc.
7. 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.
8. 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
Variables that are available everywhere 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> — the ID of the field, 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 |
marathon |
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:test 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 from the request (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 request was submitted |
| widget_landign_referer | Referrer that was on the landing page when the application was sent |
|
Certain forms may also have access to the variables described below in the "Variables available in automation webhooks" section By order ({order.*}) — if the "Access to product" form option is selected (Full access / By offer) By product ({product.*}) — if the "Access to product" + "Full access" form option is selected By offer ({offer.*}) — if the "By offer" + "Access to product" form option is selected |
|
Custom fields
{field_<id>}
Example {field_123}
<id> — the ID of the field, which can be obtained in the contact field settings
(example
https://sampleschool.kwiga.com/expert/crm/contacts?view=settings)
If there were visits with UTM tags on the page where the CTA or Kwiga visit-tracking script is placed, and the customer submitted a request on the landing page without UTM tags, they will be absent from these variables. However, they will be available in the {contact.utm_...} variables 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 contact's first known visit (Kwiga / landing page with CTA) |
| reg_from | URL of the page where the registration occurred (Kwiga / landing page 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:
- CTA form request
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
- Lesson access opened
- 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 questions answered correctly |
| 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 |
| lesson.slug | Lesson URL segment |
| 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
- Lesson access opened
- All lesson practice completed
Certificate variables
| Variable | Value |
|---|---|
| certificate_template.title | Name of the certificate template the certificate was issued from (as in the template list) |
| certificate_template.public_title | Template name the student sees (the "Title from the student's side" field) |
| certificate.number | Number of the issued certificate |
| certificate.issued_at | Certificate issue date in the YYYY-MM-DD HH:mm:ss format |
| certificate.uuid | Certificate UUID, used in the public certificate link |
Available when the following events occur:
- Certificate issued
- Certificate reissued
- Certificate opened
- Certificate downloaded
Didn't find the answer? Contact the support service via online chat or Telegram