# การเข้า Journey ตามทริกเกอร์

**การเข้า Journey ตามทริกเกอร์ (Trigger-based entry)** จะเริ่มต้น Journey เมื่อผู้ใช้ดำเนินการ Event ที่ระบุ (ตัวอย่างเช่น ดำเนินการบางอย่างที่เฉพาะเจาะจง)
<Aside type="tip">
คุณสามารถเพิ่มจุดเข้าตามทริกเกอร์ได้หลายจุด ในกรณีนั้น จุดใดจุดหนึ่งจะเริ่มต้น Journey

<img src="/journey-elements-README-6.webp" alt="จุดเข้าตามทริกเกอร์หลายจุดบน Journey canvas เดียว"/>
</Aside>

ในการตั้งค่าการเข้าตามทริกเกอร์ ให้ค้นหาองค์ประกอบการเข้าบน canvas และเลือก Event ที่จะใช้เป็นทริกเกอร์

> สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการกำหนดค่า Event โปรดดูเอกสาร [Events](/th/product/audience-data-and-segmentation/events/)

หาก Event ที่เลือกมีแอตทริบิวต์ คุณสามารถจำกัดเงื่อนไขการเข้าให้แคบลงได้โดยใช้แอตทริบิวต์เหล่านั้น คลิก **เพิ่มเงื่อนไข (Add condition)** เมื่อแก้ไของค์ประกอบ จากนั้นเลือกแอตทริบิวต์จากรายการดรอปดาวน์และกำหนดตัวดำเนินการและค่าของมัน

> สำหรับตัวดำเนินการที่มีอยู่ โปรดดู [ตัวดำเนินการของ Tag ตามประเภท](/th/product/audience-data-and-segmentation/segmentation/create-segments/by-tags/#tag-operators-by-type)

<img src="/journey-elements-trigger-based-entry-1.webp" alt="เลือก Event ที่จะใช้เป็นทริกเกอร์"/>

<Aside type="caution" title="สำคัญ">
- ต้องมี **HWID (hardware ID) หรือ User ID** อย่างใดอย่างหนึ่งในคำขอ API [`/postEvent`](/th/developer/api-reference/user-centric-api#postevent) ของคุณสำหรับ **Start Event** หากคุณส่งเพียง User ID, Pushwoosh จะค้นหาอุปกรณ์ของผู้ใช้โดยอัตโนมัติ
- การเข้า Journey กำหนดให้ผู้ใช้ต้องมีอุปกรณ์ที่ลงทะเบียนไว้อย่างน้อยหนึ่งเครื่อง User ID ที่ไม่มีอุปกรณ์เชื่อมโยงอยู่จะไม่สามารถเข้า Journey ได้
</Aside>

## กำหนดว่าใครจะเข้าสู่แคมเปญ

กำหนดว่าผู้ใช้คนใดควรเข้าสู่ Journey เมื่อมี Event ที่ระบุเกิดขึ้น

ใช้ดรอปดาวน์ **ใครจะเข้าสู่แคมเปญ? (Who enters the campaign?)** เพื่อเลือกระหว่างสองโหมดที่มีอยู่:

### ผู้ใช้ที่ดำเนินการ Event (ค่าเริ่มต้น)

ผู้ใช้ที่ทริกเกอร์ Event คือผู้ที่จะเข้าสู่ Journey

![เลือกผู้ใช้ที่ดำเนินการ Event](/journey-elements-trigger-based-entry-7.webp)

**ตัวอย่าง**  
ผู้ใช้ทำการซื้อสำเร็จ (Event `CheckoutSuccess`) ผู้ใช้คนเดียวกันนั้น (เช่น `User ID: 123`) จะเข้าสู่ Journey หลังการซื้อ ซึ่งรวมถึงข้อความขอบคุณ คำแนะนำผลิตภัณฑ์ หรือแบบสำรวจความพึงพอใจ



### ผู้ใช้จากแอตทริบิวต์ของ Event

แทนที่จะลงทะเบียนผู้ใช้ที่ทริกเกอร์ Event คุณสามารถส่ง [`User IDs`](/th/product/pushwoosh-knowledge-hub/users-userids/) หนึ่งรายการหรือมากกว่าในแอตทริบิวต์ของ Event ที่กำหนดเอง ผู้ใช้ที่ระบุในแอตทริบิวต์นั้นจะเข้าสู่ Journey

สำหรับสิ่งนี้ ให้เลือก **ผู้ใช้จากแอตทริบิวต์ของ Event (Users from an event attribute)** และเลือกคีย์แอตทริบิวต์ (เช่น `recipient_ids`, `target_user_id`) คีย์นี้ควรตรงกับโครงสร้าง payload ของ Event ของคุณ

![เลือกผู้ใช้จากแอตทริบิวต์ของ Event](/journey-elements-trigger-based-entry-8.webp)

<Aside type="caution" title="ต้องการความช่วยเหลือจากนักพัฒนา">
เพื่อใช้โหมด **ผู้ใช้จากแอตทริบิวต์ของ Event (Users from an event attribute)** อย่างถูกต้อง แอปหรือแบ็กเอนด์ของคุณต้องส่งโครงสร้าง payload ที่ถูกต้อง กรุณาแบ่งปันตัวอย่างด้านล่างกับทีมพัฒนาของคุณ
</Aside> 

##### ตัวอย่าง payload (ผู้ใช้คนเดียว)

```json
{
  "application": "XXXXX-XXXXX",
  "event": "invitation",         
  "attributes": {
      "targetId": 321
  },
  "userId": 123
}

```

ผู้ใช้ `321` (จาก `targetId`) เข้าสู่ Journey

##### ตัวอย่าง payload (ผู้ใช้หลายคน)

หากคุณระบุ User ID หลายรายการ ให้ใช้อาร์เรย์ JSON ของสตริง

```javascript
{
    "application": "XXXXX-XXXXX",
    "event": "invitation",         
    "attributes": {
        "targetIds": [1,2,3,4]
    },
    "userId": 123
}

```

ผู้ใช้ `1`, `2`, `3`, และ `4` จะเข้าสู่ Journey

#### กรณีการใช้งาน

**การแจ้งเตือนความคิดเห็น** 

เมื่อมีคนแสดงความคิดเห็นในโพสต์ของผู้ใช้ เจ้าของโพสต์จะได้รับการแจ้งเตือน

**ตัวอย่าง:** Event การแสดงความคิดเห็นรวมถึง ID ของเจ้าของโพสต์ในแอตทริบิวต์ `target_user_id` ผู้ใช้นั้นจะเข้าสู่ Journey เพื่อรับการแจ้งเตือน

**โปรแกรมแนะนำเพื่อน** 

เมื่อผู้ใช้ที่ถูกแนะนำสมัครสมาชิกหรือทำการซื้อ ผู้ที่แนะนำพวกเขาจะถูกเพิ่มเข้าไปใน Journey

**ตัวอย่าง:** ผู้ใช้ `123` ทริกเกอร์ Event และผู้แนะนำ `456` (จากแอตทริบิวต์ `referrer_id`) เข้าสู่แคมเปญรางวัล

**การซื้อของขวัญ** 

เมื่อผู้ใช้ซื้อของขวัญ ผู้รับจะถูกเพิ่มเข้าไปใน Journey โดยใช้ `recipient_user_id` จาก payload ของ Event

**ตัวอย่าง** ผู้ใช้ `123` ซื้อของขวัญให้ผู้ใช้ `456` ซึ่งจะได้รับการแจ้งเตือน ขั้นตอนการเริ่มต้นใช้งาน หรือข้อความขอบคุณ



## ตั้งค่าความพร้อมใช้งานของการเข้า

ควบคุมว่าผู้ใช้จะสามารถเข้าสู่ Journey ผ่านการเข้าตามทริกเกอร์ได้เมื่อใด คุณมีสองตัวเลือก:

* **อนุญาตให้เข้าได้ตลอดเวลา**: ผู้ใช้สามารถเข้าสู่ Journey ได้ทุกเมื่อที่ Event ทริกเกอร์เกิดขึ้น
* **จำกัดการเข้าในช่วงเวลาที่กำหนด**: ผู้ใช้สามารถเข้าสู่ Journey ได้ก็ต่อเมื่อ Event ทริกเกอร์เกิดขึ้นภายในช่วงวันที่ที่เลือก
  
  เมื่อจำกัดการเข้า ให้เลือก **วันที่เริ่มต้น**, **วันที่สิ้นสุด**, และ **เขตเวลา** หน้าต่างการเข้าจะเริ่มเวลา **00:00** ของวันที่เริ่มต้น และสิ้นสุดเวลา **23:59** ของวันที่สิ้นสุด ตามเขตเวลาที่เลือก

![ตั้งค่าความพร้อมใช้งานของการเข้า](/journey-elements-trigger-based-entry-2.webp)


## ควบคุมจำนวนเซสชันที่ผู้ใช้สามารถมีได้ในเวลาเดียวกัน

ตัดสินใจว่าผู้ใช้แต่ละคนสามารถเข้าร่วม Journey ได้เพียงครั้งละหนึ่ง Journey หรือเข้าร่วมหลาย Journey พร้อมกันได้

เลือกหนึ่งในตัวเลือกต่อไปนี้จากดรอปดาวน์:

* หนึ่งเซสชันที่ใช้งานอยู่ต่อผู้ใช้
* หลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้

#### หนึ่งเซสชันที่ใช้งานอยู่ต่อผู้ใช้

ผู้ใช้แต่ละคนสามารถมีเซสชันที่ใช้งานอยู่ในแคมเปญได้เพียงหนึ่งเซสชันเท่านั้น พวกเขาต้องทำให้เซสชันปัจจุบันเสร็จสิ้นหรือออกจากเซสชันก่อนที่จะเริ่มเซสชันใหม่

![เลือกหนึ่งเซสชันที่ใช้งานอยู่ต่อผู้ใช้](/journey-elements-trigger-based-entry-3.webp)
##### กรณีการใช้งาน

* **ขั้นตอนการเริ่มต้นใช้งาน** ที่ผู้ใช้ไม่ควรเริ่มต้นใหม่จนกว่าจะเสร็จสิ้น Journey ปัจจุบัน
* **การแจ้งเตือนการต่ออายุสมาชิก** ที่ผู้ใช้ไม่ควรได้รับการแจ้งเตือนที่ทับซ้อนกัน
* **ข้อเสนอหรือการทดลองใช้แบบจำกัดเวลา** ที่อนุญาตให้มีแคมเปญที่ใช้งานอยู่เพียงหนึ่งครั้งต่อผู้ใช้
* **แคมเปญรวบรวมความคิดเห็น** เพื่อให้แน่ใจว่าผู้ใช้แต่ละคนให้ข้อมูลเพียงครั้งเดียวก่อนที่จะเข้าซ้ำ

#### หลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้

ผู้ใช้สามารถมีเซสชันที่ใช้งานอยู่ในแคมเปญได้มากกว่าหนึ่งเซสชัน แต่ละเซสชันต้องถูกระบุด้วยแอตทริบิวต์ของ Event ที่ไม่ซ้ำกัน (เช่น `order_id`, `product_id`)

ในการตั้งค่านี้:

1. เลือก **หลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้ (Multiple active sessions per user)** ในดรอปดาวน์
     
2. เลือกแอตทริบิวต์ตัวระบุเซสชัน (เช่น `order_id`, `product_id`) แอตทริบิวต์นี้จะใช้แยกความแตกต่างระหว่างเซสชันหนึ่งกับอีกเซสชันหนึ่ง

![เลือกหลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้](/journey-elements-trigger-based-entry-4.webp)

<Aside type="caution" title="สำคัญ">
แอตทริบิวต์นี้ต้องรวมอยู่ใน Event ที่เกี่ยวข้องทั้งหมดของ Journey (ตัวอย่างเช่น ใน **รอทริกเกอร์ (Wait for trigger)** หรือ **เป้าหมาย Conversion (Conversion Goals)**) หากแอตทริบิวต์ตัวระบุเซสชันหายไป ระบบจะไม่สามารถเชื่อมโยง Event กับเซสชันที่เฉพาะเจาะจงได้ แต่ Event จะถูกนำไปใช้กับเซสชันที่ใช้งานอยู่ทั้งหมดสำหรับผู้ใช้นั้น
</Aside>

**ตัวอย่าง**

* `OrderPlaced` พร้อม `order_id = "1001"` → เริ่ม **เซสชัน 1**

* `OrderPlaced` พร้อม `order_id = "1002"` → เริ่ม **เซสชัน 2**

หากมีการส่ง Event `OrderReady` โดยไม่มี `order_id` ทั้งเซสชัน 1 และเซสชัน 2 จะถูกทำเครื่องหมายว่า "พร้อม" แม้ว่าจะมีเพียงคำสั่งซื้อเดียวที่พร้อมจริงๆ

##### กรณีการใช้งาน

* **การซื้อสินค้า E-commerce**: แต่ละคำสั่งซื้อจะเริ่มต้น Journey ของตัวเอง ดังนั้นคำสั่งซื้อหลายรายการจากผู้ใช้คนเดียวสามารถติดตามได้อย่างอิสระ *(แอตทริบิวต์: `order_id`)*  
* **โปรแกรมแนะนำเพื่อน**: การแนะนำแต่ละครั้งจะสร้างเซสชันใหม่ ทำให้ผู้ใช้คนเดียวสามารถแนะนำเพื่อนได้หลายคน *(แอตทริบิวต์: `referral_id`)*  
* **โปรแกรมสะสมคะแนน**: ติดตามคะแนนหรือรางวัลจากธุรกรรมต่างๆ ที่ทำงานพร้อมกัน *(แอตทริบิวต์: `transaction_id`)*  
* **การจองตั๋ว**: การจองแต่ละครั้งจะเปิด Journey ของตัวเอง ดังนั้นผู้ใช้สามารถจัดการตั๋วหลายใบได้พร้อมกัน *(แอตทริบิวต์: `booking_id`)*  
* **การนัดหมาย**: การนัดหมายทุกครั้งจะถูกจัดการเป็นเซสชันแยกต่างหาก *(แอตทริบิวต์: `appointment_id`)*


## ควบคุมว่าผู้ใช้สามารถเข้าสู่แคมเปญซ้ำได้หรือไม่

ตัดสินใจว่าจะเกิดอะไรขึ้นเมื่อผู้ใช้ที่อยู่ใน Journey อยู่แล้วทริกเกอร์ Event การเข้าอีกครั้ง

เลือกหนึ่งในตัวเลือกต่อไปนี้จากดรอปดาวน์:

* ไม่อนุญาตให้เข้าซ้ำ (ค่าเริ่มต้น)
* อนุญาตให้เข้าซ้ำ

#### ไม่อนุญาตให้เข้าซ้ำ

ผู้ใช้ที่อยู่ใน Journey อยู่แล้วจะไม่เข้าซ้ำ หากผู้ใช้อยู่ในเซสชันที่ใช้งานอยู่และทริกเกอร์ Event การเข้าอีกครั้ง ทริกเกอร์ใหม่จะถูกละเว้นและผู้ใช้จะดำเนินเซสชันปัจจุบันต่อไป

**กรณีการใช้งาน**

* **ชุดข้อความต้อนรับและเริ่มต้นใช้งาน** ที่ผู้ใช้ใหม่จะผ่าน Journey เพียงครั้งเดียวตั้งแต่ต้นจนจบ และจะอยู่ในตำแหน่งเดิมหากพวกเขาทริกเกอร์ Event อีกครั้ง แทนที่จะถูกส่งกลับไปที่จุดเริ่มต้น
* **ข้อเสนอครั้งเดียว** ที่ลูกค้าแต่ละคนควรได้รับโปรโมชั่นหรือส่วนลดเพียงครั้งเดียว แม้ว่าพวกเขาจะทริกเกอร์ Event หลายครั้ง
* **ขั้นตอนการให้ความรู้และสร้างความสัมพันธ์** ที่ผู้สมัครสมาชิกจะเคลื่อนที่ผ่านเนื้อหาต่อไปโดยไม่เริ่มต้นใหม่และได้รับอีเมลเดิมอีกครั้ง

#### อนุญาตให้เข้าซ้ำ

ผู้ใช้ที่อยู่ใน Journey อยู่แล้วจะถูกลบออกจากเซสชันปัจจุบันและเข้าสู่เซสชันใหม่ ทุกครั้งที่ผู้ใช้ทริกเกอร์ Event การเข้า เซสชันปัจจุบันของพวกเขาจะสิ้นสุดลงและเซสชันใหม่จะเริ่มต้นขึ้น

**กรณีการใช้งาน**

* **การแจ้งเตือนราคาลด** ที่การเริ่มต้นใหม่ต้องใช้ราคาใหม่ ไม่ใช่แจ้งเตือนเกี่ยวกับราคาที่ล้าสมัยจากเซสชันก่อนหน้า
* **แคมเปญดึงลูกค้ากลับ** ที่ผู้ใช้ที่ไม่ได้ใช้งานที่กลับมาควรเริ่มต้นจากข้อความแรกในลำดับเสมอ


<Aside type="note">
การเข้าซ้ำจะควบคุมสิ่งที่เกิดขึ้นกับผู้ใช้ที่อยู่ใน Journey อยู่แล้ว มันไม่มีผลต่อจำนวนเซสชันที่ผู้ใช้สามารถทำงานพร้อมกันได้ สิ่งนั้นถูกกำหนดค่าภายใต้ [ควบคุมจำนวนเซสชันที่ผู้ใช้สามารถมีได้ในเวลาเดียวกัน](#control-how-many-sessions-a-user-can-have-at-the-same-time)
</Aside>

เมื่อคุณกำหนดค่าองค์ประกอบการเข้าเสร็จแล้ว คลิก **นำไปใช้ (Apply)** เพื่อบันทึกการเปลี่ยนแปลง


## สถานการณ์ตัวอย่าง: Journey การสั่งซื้อ E-commerce ที่มีหลายเซสชัน

สมมติว่าคุณต้องการส่งการแจ้งเตือนสำหรับทุกคำสั่งซื้อที่ผู้ใช้สั่งซื้อ แต่ละคำสั่งซื้อควรมีเซสชัน Journey ของตัวเอง ในการทำเช่นนี้ คุณจะใช้ Event `OrderPlaced` เป็นทริกเกอร์และแอตทริบิวต์ `order_id` เป็นตัวระบุเซสชัน

1. สร้าง Event `OrderPlaced` และตรวจสอบให้แน่ใจว่ามีแอตทริบิวต์ `order_id` [เรียนรู้เพิ่มเติมเกี่ยวกับการสร้าง Event](/th/product/audience-data-and-segmentation/events/#implementation)

![สร้าง Event OrderPlaced](/journey-elements-trigger-based-entry-5.webp)
2. ตั้งค่า Event นี้เป็นทริกเกอร์สำหรับ Journey ของคุณ

![ตั้งค่า Event นี้เป็นทริกเกอร์สำหรับ Journey ของคุณ](/journey-elements-trigger-based-entry-6.webp)

3. ในการตั้งค่าเซสชัน เลือก **หลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้ (Multiple active sessions per user)** และเลือก `order_id` เป็นตัวระบุเซสชัน

![เลือกหลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้](/journey-elements-trigger-based-entry-9.webp)

ในการตั้งค่านี้ คำสั่งซื้อใหม่แต่ละรายการจะเริ่มต้นเซสชัน Journey แยกต่างหาก

* `OrderPlaced` พร้อม `order_id = 1001` เริ่ม **เซสชัน 1**
* `OrderPlaced` พร้อม `order_id = 1002` เริ่ม **เซสชัน 2**

4. ต่อไป เพิ่ม [องค์ประกอบรอทริกเกอร์ (Wait for Trigger element)](/th/product/customer-journey/journey-elements/flow-controls/wait-for-trigger/) เพื่อติดตามเมื่อคำสั่งซื้อพร้อมสำหรับการรับหรือจัดส่ง ใช้ Event `OrderReady` ซึ่งต้องมี `order_id` เดียวกันด้วย
   สิ่งนี้ช่วยให้แน่ใจว่าแต่ละคำสั่งซื้อได้รับการอัปเดตในเซสชันที่ถูกต้อง:
* `OrderReady` พร้อม `order_id = 1001` ใช้กับ **เซสชัน 1** เท่านั้น
* `OrderReady` พร้อม `order_id = 1002` ใช้กับ **เซสชัน 2** เท่านั้น
<Aside type="caution" title="สำคัญ">
หาก Event **ไม่มี** `order_id` ระบบจะไม่สามารถบอกได้ว่ามันเป็นของเซสชันใด และ Event จะถูกนำไปใช้กับเซสชันที่ใช้งานอยู่ทั้งหมดสำหรับผู้ใช้นั้น
</Aside>

![ใช้ Event OrderReady ในองค์ประกอบรอทริกเกอร์](/journey-elements-trigger-based-entry-10.webp)

5. สุดท้าย เพิ่ม [เป้าหมาย Conversion](/th/product/customer-journey/journey-settings/#conversion-goals) ตัวอย่างเช่น Event `OrderDelivered` Event นี้ต้องมี `order_id` เดียวกันด้วยเพื่อให้สามารถจับคู่กับเซสชันที่ถูกต้องได้
* หาก `OrderDelivered` มี `order_id = "1001"` จะบันทึก Conversion สำหรับ **เซสชัน 1**

* หาก `OrderDelivered` มี `order_id = "1002"` จะบันทึก Conversion สำหรับ **เซสชัน 2**
<Aside type="caution" title="สำคัญ">
หาก `order_id` หายไป Conversion จะถูกนำไปใช้กับเซสชันที่ใช้งานอยู่ทั้งหมดสำหรับผู้ใช้นั้น แทนที่จะเป็นเพียงเซสชันที่ตั้งใจไว้
</Aside>

![เลือกหลายเซสชันที่ใช้งานอยู่ต่อผู้ใช้](/journey-elements-trigger-based-entry-11.webp)