Skip to main content

Events

Authentication

Load User Data

dataLayer.push({
__USER_DATA__,
});

User Login

dataLayer.push({
event: "user_login",
});

User Logout

dataLayer.push({
event: "user_logout",
});

Add New Listing

This should be fired when the user click on the “Add Listing” button.

dataLayer.push({
event: "add_new_listing_click",
source: "header" | "user_side_bar" | "footer" | "profile",
});

Open Services Popup

dataLayer.push({
event: "show_services_popup",
});

Close Services Popup

dataLayer.push({
event: "close_services_popup",
});

Open User Side Bar

dataLayer.push({
event: "show_user_menu",
loggedIn: true | false,
hasNotifs: true | false, // whether the user has unread notifs or not
});

Close User Side Bar

dataLayer.push({
event: "close_user_menu",
});

Open Notifs

dataLayer.push({
event: "open_notifs",
hasNotifs: true | false, // whether the user has unread notifs or not
});

Open User Profile

dataLayer.push({
event: "open_user_profile",
source: "user_side_bar" | "listing" | "chat" | "search" | "footer", // listing source is WiP
});

Open Requests

dataLayer.push({
event: "open_requests",
});

Open Faved Listings

dataLayer.push({
event: "open_faivorate_listings",
});

Toggle between Faved/Called Listings

dataLayer.push({
event: "toggle_fav_listings",
type: "fav" | "called",
});

Open Contact us

dataLayer.push({
event: "open_contact_us",
source: "user_side_bar" | "footer",
});

Toggle Between Contact us/ Support

dataLayer.push({
event: "toggle_contact_us",
source: "contact" | "support",
});

Submit Contact Us form

dataLayer.push({
event: "submit_contact_us",
p_id,
content,
payload,
listing_id,
});

Open Building Calculator

dataLayer.push({
event: "open_building_calculator",
});
dataLayer.push({
event: "open_add_featured",
});

Open Services

dataLayer.push({
event: "open_services",
});

Open Rent Contracts

dataLayer.push({
event: "open_rent_contracts",
});

Open Stats Page

dataLayer.push({
event: "open_stats",
});

Open Construction

dataLayer.push({
event: "open_construction",
});

Open Report Listing Modal

dataLayer.push({
event: "open_report_listing_modal",
});

Submit Listing Report

dataLayer.push({
event: "submit_listing_report",
listing_id,
content,
reason:
"wrong_price" |
"wrong_location" |
"expired_listing" |
"rega_noncompliance" |
"impolite_response" |
"other",
});

Open Property Registration

dataLayer.push({
event: "open_property_registration",
});

Open Surveying Property

dataLayer.push({
event: "open_surveying_property",
});

Open Alahli

This event is triggered when users open AlAhli (SNB) screen

dataLayer.push({
event: "open_alahli",
});

Open Alinma

This event is triggered when users open Alinma screen

dataLayer.push({
event: "open_alinma",
});

Open today's listings

This event is triggered when users click today's listing on services popup

dataLayer.push({
event: "open_today_listings",
});

Open listing fee

This event is triggered when users click listing fee on services popup

dataLayer.push({
event: "open_listing_fee",
});

Open chat

This event is triggered when users click chat on footer view

dataLayer.push({
event: "open_chat",
});

Open agent agreement

This event is triggered when users click agent agreement on services popup

dataLayer.push({
event: "open_agent_agreement",
});

Open land area calculator

This event is triggered when users click land area calculator

dataLayer.push({
event: "open_land_area_calc",
});

Add new private listing

This event is triggered when users click 'Add private property'

dataLayer.push({
event: "add_new_private_listing",
});

Open private listing

This event is triggered when users click private listing icon on the map

dataLayer.push({
event: "open_private_listing",
});

Open my clients

This event is triggered when users open my clients screen

dataLayer.push({
event: "open_my_clients",
});

Add new client

This event is triggered when users click add client from client page / listing detail page

dataLayer.push({
event: "add_new_client",
});

Open my tasks

This event is triggered when users open my tasks screen

dataLayer.push({
event: "open_my_tasks",
});

Add new task

This event is triggered when users click 'Add new update' in task detail screen

dataLayer.push({
event: "add_new_task",
});

Show province

This event is triggered when users navigate to province level

dataLayer.push({
event: "show_province",
});

Open listing nearby service

This event is triggered when users click nearby service map in listing detail screen

dataLayer.push({
event: "open_nearby_service",
});

Go to current location

This event is triggered when users click current location on map

dataLayer.push({
event: "go_to_current_location",
});

Click similar listing

This event is triggered when users click similar listing

dataLayer.push({
event: "open_similar_listing",
...__LISTING_DATA__,
});

Add new request

This event is triggered when users create request successfully

dataLayer.push({
event: "add_new_request",
});

Discovery

View Listing List

dataLayer.push({
event: "view_listing_list",
...__LISTING_LIST_PARAMS__,
});

Listing Impression

dataLayer.push({
event: "listing_list_impression",
...__LISTING_DATA__,
});

Listing Map Impression

This event is triggered when the user clicks on a pin in the map search screen.

dataLayer.push({
event: "listing_map_impression",
...__LISTING_DATA__,
});

Listing Pin Impression

This should be triggered when a map pin is shown to the user.

dataLayer.push({
event: "listing_map_pin_impression",
type: "default" | "golden" | "execulsive" | "daily_rental",
...__LISTING_DATA__,
});

Change Listing Category

dataLayer.push({
event: "change_listing_list_category",
...__LISTING_LIST_PARAMS__,
listing_list_previous_category: 4,
listing_list_current_category: 1,
});

Change Listing View (to list or to map)

This should be triggered when the user click the button to switch the view type.

dataLayer.push({
  event: 'change_listing_list_view',
...__LISTING_LIST_PARAMS__,
listing_list_view: 'list' | 'map',
}

Open Search Filters Pan

dataLayer.push({
event: "open_listing_list_filters",
...__LISTING_LIST_PARAMS__,
});

Update Search Filters

dataLayer.push({
event: "change_listing_list_filters",
...__LISTING_LIST_PARAMS__,
});

City Pin Impression

This event is triggered when the user is on the map page and clicks on the city marker.

dataLayer.push({
event: "city_map_pin_click",
city_name: "cityName",
city_lat: "cityLat",
city_lng: "cityLang",
});

Toggle View Mode on map

This event is triggered when the user changes the listings view mode on the map screen.

dataLayer.push({
event: "change_map_view",
map_view_mode: "list" | "pins",
});

Start Draw

This event is triggered when the user starts drawing search boundaries on the map

dataLayer.push({
event: "start_draw_on_map",
});

Cancel Draw

This event is triggered when the user cancels drawing search boundaries on the map

dataLayer.push({
event: "cancel_draw_on_map",
});

Change Map Type

This event is triggered when the user changes the map type.

dataLayer.push({
event: "change_map_type",
map_type: "satellite" | "roadmap",
});

Service pin click

This event is triggered when the user clicks on a service pin on the map.

dataLayer.push({
event: "service_pin_click",
name: "<value>",
});

View Listing

View Listing

dataLayer.push({
event: "view_listing",
...__LISTING_DATA__,
});

View Listing Image

dataLayer.push({
event: "view_listing_image",
...__LISTING_DATA__,
});

View Listing Video

dataLayer.push({
event: "view_listing_video",
...__LISTING_DATA__,
});

Get Listing Phone

dataLayer.push({
event: "get_listing_phone",
...__LISTING_DATA__,
});

Add Listing To Favorites

dataLayer.push({
event: "add_listing_to_favorites",
...__LISTING_DATA__,
});

Share Listing Popup

dataLayer.push({
event: "open_share_listing_popup",
...__LISTING_DATA__,
});

Share Listing

dataLayer.push({
event: "share_listing",
share_method: "twitter" | "whatsapp" | "link" | "other",
...__LISTING_DATA__,
});

App Review / Feedback

This event is triggered when user choose stars rating on the app

dataLayer.push({
event: "review_app"
rating: number;
feedback?: string; (optional)
})

Daily rent

Reserve listing

This event is triggered when users click 'reserve' button in listing detail screen

dataLayer.push({
event: "daily_rental_reserve_button",
...__BOOKING_DATA__,
});

Confirm reservation

This event is triggered when users click 'Confirm' button in summary screen

dataLayer.push({
event: "daily_rental_payment_button",
...__BOOKING_DATA__,
});

Switch to daily rent mode

This event is triggered when users switch to daily rental mode

dataLayer.push({
event: "daily_rental_mode",
});

Update daily rent search filters

This event is triggered when users change date range on map, or confirming filter change on search panel

dataLayer.push({
event: "daily_rental_change_filter",
});

Show calendar on map

This event is triggered when users click on button to show calendar modal on map

dataLayer.push({
event: "daily_rental_change_date",
});

Chat host

This event is triggered when users click on chat button on daily rent listing

dataLayer.push({
event: "daily_rental_chat_button",
...__LISTING_DATA__,
});

Daily rental search listing

This event is triggered when users click on search button on search menu while on daily rental mode

dataLayer.push({
event: "daily_rental_search",
});

STC

Show STC coverage on the map

This event is triggered everytime the app get STC coverage response from server ( for display on the map )

dataLayer.push({
event: "stc_home_screen_shown",
});

Open STC screen

This event is triggered when users click STC button while STC screen is enabled ( Info.configurations.stc_screen = true )

dataLayer.push({
event: "stc_detail_screen_shown",
});

This event is triggered when users click STC button in listing detail screen while STC screen is disabled ( Info.configurations.stc_screen = false )

dataLayer.push({
event: "stc_external_link_clicked",
});

Click STC banner

This event is triggered when users click banner in STC screen

dataLayer.push({
event: "stc_banner",
link: "<value>",
});

Click STC services

This event is triggered when users click services in STC screen

dataLayer.push({
event: "stc_services",
name: "<value>",
});

AQAR+

Use quarterly statistics

This event is triggered when AQAR+ users click 'Quarterly stats' tab

dataLayer.push({
event: "aqar_plus_quarterly_stats",
});

Show favorite listings on the map

This event is triggered when AQAR+ users show fav listing on map

dataLayer.push({
event: "aqar_plus_fav_listings",
});

Show full listing statistic

This event is triggered when AQAR+ users click 'Full listing stat' button

dataLayer.push({
event: "aqar_plus_full_listing_stats",
});

Use AQAR+ filters

This event is triggered when AQAR+ users click 'Search' in search screen

dataLayer.push({
event: "aqar_plus_filters",
source: "all" | "owner" | "direct" | "unique" | "unverified_owner",
use_text_search: true | false,
});

Payment

Pay with Payfort started

This event is triggered when Payfort payment started (with new/used card)

dataLayer.push({
event: "payfort_start",
use_promo_code: true | false,
});

Pay with Payfort completed

This event is triggered when Payfort payment completed successfully

dataLayer.push({
event: "payfort_success",
use_promo_code: true | false,
});

Pay with ApplePay started

This event is triggered when users click ApplePay button

dataLayer.push({
event: "applepay_start",
use_promo_code: true | false,
});

Pay with ApplePay completed

This event is triggered when ApplePay payment completed successfully

dataLayer.push({
event: "applepay_success",
use_promo_code: true | false,
});

Apply promo coupon started

This event is triggered when users click 'Do you have a promo code button?'

dataLayer.push({
event: "promocode_start",
});

Apply promo coupon completed

This event is triggered when users apply promo code successfully ( discount returned != 0 )

dataLayer.push({
event: "promocode_success",
promo_code: "<value>",
});

Purchase listing boost IAP started

This event is triggered when users start listing boost IAP purchase

dataLayer.push({
event: "listing_boost_iap_start",
});

Purchase listing boost IAP completed

This event is triggered when listing boost IAP purchase completed successfully

dataLayer.push({
event: "listing_boost_iap_success",
});

Start Payment from Web View

This event is triggered when user open web payment screen (for credit card 3d secure security input)

dataLayer.push({
event: "web_payment_view",
});

Web View Payment Success

This event is triggered when user completed a 3d secure security input

dataLayer.push({
event: "web_payment_success",
});

Web View Payment Failed

This event is triggered when user failed a 3d secure security input

dataLayer.push({
event: "web_payment_failed",
});

Deals / MOJ

Open deals info

This event is triggered when users click deals info tab in district review screen

dataLayer.push({
event: "deals_info_tab",
});

Change deals category

This event is triggered when users click deals info category tab

dataLayer.push({
event: "deals_info_category",
name: "<value>",
});

Open MOJ statistic screen

This event is triggered when users click 'Advance search' in deals info screen

dataLayer.push({
event: "deals_info_advance",
});

Change quarter period in MOJ screen

This event is triggered when users change quarter info in MOJ screen

dataLayer.push({
event: "deals_info_quarter",
name: "<value>",
});

Change district in MOJ screen

This event is triggered when users change district in MOJ screen

dataLayer.push({
event: "deals_info_district",
name: "<value>",
});

Click parcel info in MOJ screen

This event is triggered when users click parcel in MOJ screen

dataLayer.push({
event: "deals_info_parcel",
});

Real estate project

Enter Real Estate project mode

This event is triggered when users press real estate project mode button

dataLayer.push({
event: "real_estate_projects_mode",
});

Click project pin

This event is triggered when users click project pin on map

dataLayer.push({
event: "project_pin_click",
project_id: "<value>",
});

Click project card

This event is triggered when users click project card on listing list

dataLayer.push({
event: "project_card_click",
project_id: "<value>",
});

Other events

SMS bank number

This event is triggered when user click 'SMS bank info' in after payment form

dataLayer.push({
event: "sms_bank_info",
account_no: "585608010000076" | "26972341000104",
});

Allow / not allow GPS

This event is triggered when GPS permission popup shown (after installation)

dataLayer.push({
event: "allow_gps",
allowed: true | false,
});

Touch ID authentication started

This event is triggered when users start TouchId

dataLayer.push({
event: "touch_id_start",
});

Touch ID authentication completed

This event is triggered when TouchId verification completed successfully

dataLayer.push({
event: "touch_id_success",
});

Face ID authentication started

This event is triggered when users start FaceId

dataLayer.push({
event: "face_id_start",
});

Face ID authentication completed

This event is triggered when FaceId verification completed successfully

dataLayer.push({
event: "face_id_success",
});

Change language

This event is triggered when users change language

dataLayer.push({
event: "change_language",
to: "ar" | "en",
});

Dial listing owner

This event is triggered after users make phone call to listing owner

dataLayer.push({
event: "dial_owner",
answered: true | false,
..__LISTING_DATA__,
})

Whatsapp listing owner

This event is triggered after users click whatsappp to listing owner

dataLayer.push({
event: "whatsapp_owner",
..__LISTING_DATA__,
})

Chat listing owner

This event is triggered when users click chat owner button ( except daily rent listing. It uses 'daily_rental_chat_button' event )

dataLayer.push({
event: "listing_chat_button",
..__LISTING_DATA__,
})

Chat message sent

This event is triggered after users send chat message successfully (through API or socket)

dataLayer.push({
event: "message_sent",
type: "text" | "voice" | "image",
});

Reset search filter

This event is triggered when users click reset filter in search screen

dataLayer.push({
event: "reset_filter",
});

Open search by QR code

This event is triggered when users users click search by QR code in search screen

dataLayer.push({
event: "search_qr",
});

Search listing by Filters

This event is triggered when users click on search button on search screen

dataLayer.push({
event: "search_by_filters",
});

Add Self CRM

This event is triggered when a calling user is added to ad owner CRM from addSelfCRM request

dataLayer.push({
event: "add_self_crm",
});

Promote Listing Intent

This event is triggered when user open a boost listing screen

dataLayer.push({
event: "promote_listing_intent",
});

Promote Listing Confirm

This event is triggered when user open payment screen after boost listing screen

dataLayer.push({
event: "promote_listing_confirm",
});

User Registration

Forgot Password Request Sent

This event is triggered when users sent a forgot password request

dataLayer.push({
event: "forgot_password_request_sent",
});

Forgot Password Request Done

This event is triggered when users got response from server for a forgot password request

dataLayer.push({
event: "forgot_password_request_done",
});

Forgot Password Verify Sent

This event is triggered when users sent a forgot password verification request

dataLayer.push({
event: "forgot_password_verify_sent",
});

Forgot Password Verify Done

This event is triggered when users got response from server for a forgot password verification request

dataLayer.push({
event: "forgot_password_verify_done",
});

Registration Request Sent

This event is triggered when users sent a new registration request

dataLayer.push({
event: "registration_request_sent",
});

Registration Request Done

This event is triggered when users got response from server for a new regisration request

dataLayer.push({
event: "registration_request_done",
});

Registration Verification Sent

This event is triggered when users sent a registration verification request

dataLayer.push({
event: "registration_verify_sent",
});

Register / create new account

This event is triggered when users create new account successfully

dataLayer.push({
event: "registration_success",
});

Change Mobile Request Sent

This event is triggered when users sent a change mobile request

dataLayer.push({
event: "change_mobile_request_sent",
});

Change Mobile Request Done

This event is triggered when users got response from server for a change mobile request

dataLayer.push({
event: "change_mobile_request_done",
});

Change Mobile Verify Sent

This event is triggered when users sent a change mobile verification request

dataLayer.push({
event: "change_mobile_verify_sent",
});

Change Mobile Verify Done

This event is triggered when users got response from server for a change mobile verification request

dataLayer.push({
event: "change_mobile_verify_done",
});

Add / Edit Listing

See Listing Fees

This event is triggered when user sees listing fee agreement on adding listing flow

dataLayer.push({
event: "add_listing_fees",
});

Add Listing Category

This event is triggered when user see category selection screen when adding listing

dataLayer.push({
event: "add_listing_category",
});

Edit Listing Category

This event is triggered when user see category selection screen when editing listing

dataLayer.push({
event: "edit_listing_category",
});

Add Listing First Entry

This event is triggered when user see first entry screen when adding listing

dataLayer.push({
event: "add_listing_first_entry",
});

Edit Listing First Entry

This event is triggered when user see first entry screen when editing listing

dataLayer.push({
event: "edit_listing_first_entry",
});

Add Listing Second Entry

This event is triggered when user see second entry screen when adding listing

dataLayer.push({
event: "add_listing_second_entry",
});

Edit Listing Second Entry

This event is triggered when user see second entry screen when editing listing

dataLayer.push({
event: "edit_listing_second_entry",
});

Add Listing Map

This event is triggered when user see location selection screen when adding listing

dataLayer.push({
event: "add_listing_map",
});

Edit Listing Map

This event is triggered when user see location selection screen when editing listing

dataLayer.push({
event: "edit_listing_map",
});

This event is triggered when user see media upload screen when adding listing

dataLayer.push({
event: "add_listing_gallery",
});

This event is triggered when user see media upload screen when editing listing

dataLayer.push({
event: "edit_listing_gallery",
});

Cancel Add Listing

This event is triggered when user cancel add listing process

dataLayer.push({
event: "add_listing_canceled",
});

New Listing Review

This event is triggered when user see new listing preview screen

dataLayer.push({
event: "listing_review",
});

Add Listing Success

This event is triggered when user published new listing

dataLayer.push({
event: "add_listing_success",
...__LISTING_DATA__,
});

Add new licensed listing

This event is triggered when user click 'Add licensed listing'

dataLayer.push({
event: "add_new_licensed_listing_click",
});

Add new listing ( with issuing license )

This event is triggered when user click 'Add listing ( with issuing license)'

dataLayer.push({
event: "add_licensing_request_by_aqar",
});

Add new marketing request

This event is triggered when user click 'Add marketing request'

dataLayer.push({
event: "add_marketing_request",
});

Things to Do

Confirm if setting _clear: **true** is needed in Next.js.

References

[GA4] Event collection limits

#GTMTips: Two Simple Data Model Tricks