Shopify Webhook

How To Use The Triggers

 

Follow the below visual guide for using the triggers, learn more about our Shopify integration here.

 

After adding the details and mapping the variable, attach the trigger to a subflow as:

 

 

 

 

We are now ready to use the triggers.

Triggers & Response Payloads

Cart Abandoned

Cart Abandoned is triggered from shopify whenever any customer enter their billing details but does not continue to payment page or does not complete the payment.

 

The response payload returns information regarding cart items, amount , checkout page url etc.

 

The response payload return the following JSON.

 

{
"id": 31436486049858,
"token": "5f47abde83b5d4a079cd5489c9bc6fa2",
"buyer_accepts_marketing": false,
"buyer_accepts_sms_marketing": false,
"created_at": "2023-03-28T04:56:22+00:00",
"updated_at": "2023-03-28T00:57:03-04:00",
"note": "f12372u15376836",
"taxes_included": false,
"total_weight": 0,
"currency": "AUD",
"phone": "+923032320964",
"customer_locale": "en",
"line_items": [
{
"key": "12535578755138",
"fulfillment_service": "manual",
"gift_card": false,
"grams": 0,
"presentment_variant_title": "Black",
"product_id": 1413103583298,
"quantity": 1,
"requires_shipping": true,
"sku": "11797017-1",
"taxable": false,
"title": "Pink Leather Quartz Watch",
"variant_id": 12535578755138,
"variant_title": "Black",
"variant_price": "14.99",
"vendor": "hapans",
"line_price": "14.99",
"price": "14.99"
}
],
"name": "#31436486049858",
"source_name": "5092638721",
"total_line_items_price": "14.99",
"total_tax": "0.00",
"total_discounts": "0.00",
"subtotal_price": "14.99",
"total_price": "34.99",
"total_duties": "0.00",
"billing_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"last_name": "Siddiqui",
"orders_count": 6,
"state": "disabled",
"total_spent": "204.59",
"last_order_id": 4862145101890,
"verified_email": true,
"tax_exempt": false,
"phone": "+923032320964",
"currency": "AUD",
"default_address": {
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"zip": "78601",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
}
}

 

Note : The minimum time limit before the cart abandoned webhook triggered is 30 minutes by default

Order Creation (Cash On Delivery & Credit Card)

 

This webhook is triggered whenever someone completes the checkout process and places an order. The only difference between the two triggers is that when using Cash on Delivery, the order is by default marked unpaid and when using credit card, the order is by default marked as paid.

 

The response payload returns the following JSON

 

{
"id": 4862145101890,
"app_id": 5092638721,
"browser_ip": "119.160.34.14",
"buyer_accepts_marketing": false,
"checkout_id": 31435950030914,
"checkout_token": "3b34065898c1c679e0283b3c8c7d5da0",
"confirmed": true,
"created_at": "2023-03-27T23:16:50-04:00",
"currency": "AUD",
"current_subtotal_price": "24.87",
"current_total_discounts": "0.00",
"current_total_price": "44.87",
"current_total_tax": "0.00",
"customer_locale": "en",
"estimated_taxes": false,
"financial_status": "pending",
"gateway": "Cash on Delivery (COD)",
"location_id": 5833621570,
"name": "#1044",
"note": "f12372u15376836",
"number": 44,
"order_number": 1044,
"order_status_url": "Thank you! - CONNECTDOTS DEMO STORE - Checkout ",
"payment_gateway_names": [
"Cash on Delivery (COD)"
],
"phone": "+923032320964",
"processed_at": "2023-03-27T23:16:49-04:00",
"processing_method": "manual",
"reference": "a05cd2354ac4540796e3fe1e3c161553",
"source_identifier": "a05cd2354ac4540796e3fe1e3c161553",
"source_name": "5092638721",
"subtotal_price": "24.87",
"taxes_included": false,
"test": false,
"token": "de745afb0f9e4ce033d41035ddd1f58c",
"total_discounts": "0.00",
"total_line_items_price": "24.87",
"total_outstanding": "44.87",
"total_price": "44.87",
"total_price_usd": "29.86",
"total_tax": "0.00",
"total_tip_received": "0.00",
"total_weight": 0,
"updated_at": "2023-03-27T23:16:50-04:00",
"billing_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"created_at": "2023-03-27T18:09:49-04:00",
"updated_at": "2023-03-27T23:16:50-04:00",
"last_name": "Siddiqui",
"state": "disabled",
"verified_email": true,
"tax_exempt": false,
"phone": "+923032320964",
"sms_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_collected_from": "SHOPIFY"
},
"currency": "AUD",
"accepts_marketing_updated_at": "2023-03-27T23:16:50-04:00",
"default_address": {
"id": 7363751346242,
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"zip": "78601",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
},
"line_items": [
{
"id": 12241816059970,
"fulfillable_quantity": 1,
"fulfillment_service": "manual",
"gift_card": false,
"grams": 0,
"name": "Classic Nato Strap Watch - CH 0221",
"price": "24.87",
"product_exists": true,
"product_id": 1413102731330,
"quantity": 1,
"requires_shipping": true,
"sku": "1097285-ch-0221",
"taxable": false,
"title": "Classic Nato Strap Watch",
"total_discount": "0.00",
"total_discount_set": {
"shop_money": {
"amount": "0.00",
"currency_code": "AUD"
},
"presentment_money": {
"amount": "0.00",
"currency_code": "AUD"
}
},
"variant_id": 12535576723522,
"variant_inventory_management": "shopify",
"variant_title": "CH 0221",
"vendor": "hapans"
}
],
"shipping_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
}
}

Order Cancelled

 

This webhook is triggered whenever the order is cancelled from the shopify admin console.

The response payload returns the following JSON.

{
"id": 4862123409474,
"app_id": 5092638721,
"browser_ip": "119.160.34.14",
"buyer_accepts_marketing": false,
"cancel_reason": "customer",
"cancelled_at": "2023-03-28T00:50:11-04:00",
"checkout_id": 31435774623810,
"checkout_token": "d30a2d9c71d12d4ff8a154b4b140774e",
"closed_at": "2023-03-28T00:50:10-04:00",
"confirmed": true,
"created_at": "2023-03-27T22:46:04-04:00",
"currency": "AUD",
"current_subtotal_price": "0.00",
"current_total_discounts": "0.00",
"current_total_price": "0.00",
"current_total_tax": "0.00",
"customer_locale": "en",
"estimated_taxes": false,
"financial_status": "voided",
"gateway": "Cash on Delivery (COD)",
"location_id": 5833621570,
"name": "#1041",
"note": "f12372u15376836",
"number": 41,
"order_number": 1041,
"order_status_url": "Thank you! - CONNECTDOTS DEMO STORE - Checkout ",
"payment_gateway_names": [
"Cash on Delivery (COD)"
],
"phone": "+923032320964",
"processed_at": "2023-03-27T22:46:02-04:00",
"processing_method": "manual",
"reference": "934715d25490a701d19d0afb46e2e73a",
"source_identifier": "934715d25490a701d19d0afb46e2e73a",
"source_name": "5092638721",
"subtotal_price": "24.87",
"taxes_included": false,
"test": false,
"token": "3e7b990cb48fb3908681618fdfd11cb8",
"total_discounts": "0.00",
"total_line_items_price": "24.87",
"total_outstanding": "0.00",
"total_price": "44.87",
"total_price_usd": "29.86",
"total_tax": "0.00",
"total_tip_received": "0.00",
"total_weight": 0,
"updated_at": "2023-03-28T00:50:11-04:00",
"billing_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"created_at": "2023-03-27T18:09:49-04:00",
"updated_at": "2023-03-27T23:16:50-04:00",
"last_name": "Siddiqui",
"state": "disabled",
"verified_email": true,
"tax_exempt": false,
"phone": "+923032320964",
"sms_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_collected_from": "SHOPIFY"
},
"currency": "AUD",
"accepts_marketing_updated_at": "2023-03-27T23:16:50-04:00",
"default_address": {
"id": 7363751346242,
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"zip": "78601",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
},
"line_items": [
{
"id": 12241758912578,
"fulfillable_quantity": 0,
"fulfillment_service": "manual",
"gift_card": false,
"grams": 0,
"name": "Classic Nato Strap Watch - CH 0222",
"price": "24.87",
"product_exists": true,
"product_id": 1413102731330,
"quantity": 1,
"requires_shipping": true,
"sku": "1097285-ch-0222",
"taxable": false,
"title": "Classic Nato Strap Watch",
"total_discount": "0.00",
"total_discount_set": {
"shop_money": {
"amount": "0.00",
"currency_code": "AUD"
},
"presentment_money": {
"amount": "0.00",
"currency_code": "AUD"
}
},
"variant_id": 12535576133698,
"variant_inventory_management": "shopify",
"variant_title": "CH 0222",
"vendor": "hapans"
}
],
"shipping_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
}
}

Order Paid

 

This webhook is triggered whenever the order is marked from the shopify admin console.

 

The response payload returns the following JSON.

 

{
"id": 4862145101890,
"app_id": 5092638721,
"browser_ip": "119.160.34.14",
"buyer_accepts_marketing": false,
"checkout_id": 31435950030914,
"checkout_token": "3b34065898c1c679e0283b3c8c7d5da0",
"confirmed": true,
"created_at": "2023-03-27T23:16:50-04:00",
"currency": "AUD",
"current_subtotal_price": "24.87",
"current_total_discounts": "0.00",
"current_total_price": "44.87",
"current_total_tax": "0.00",
"customer_locale": "en",
"estimated_taxes": false,
"financial_status": "paid",
"gateway": "Cash on Delivery (COD)",
"location_id": 5833621570,
"name": "#1044",
"note": "f12372u15376836",
"number": 44,
"order_number": 1044,
"order_status_url": "Thank you! - CONNECTDOTS DEMO STORE - Checkout ",
"payment_gateway_names": [
"Cash on Delivery (COD)"
],
"phone": "+923032320964",
"processed_at": "2023-03-27T23:16:49-04:00",
"processing_method": "manual",
"reference": "a05cd2354ac4540796e3fe1e3c161553",
"source_identifier": "a05cd2354ac4540796e3fe1e3c161553",
"source_name": "5092638721",
"subtotal_price": "24.87",
"taxes_included": false,
"test": false,
"token": "de745afb0f9e4ce033d41035ddd1f58c",
"total_discounts": "0.00",
"total_line_items_price": "24.87",
"total_outstanding": "0.00",
"total_price": "44.87",
"total_price_usd": "29.86",
"total_tax": "0.00",
"total_tip_received": "0.00",
"total_weight": 0,
"updated_at": "2023-03-28T00:42:02-04:00",
"billing_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"created_at": "2023-03-27T18:09:49-04:00",
"updated_at": "2023-03-27T23:16:50-04:00",
"last_name": "Siddiqui",
"state": "disabled",
"verified_email": true,
"tax_exempt": false,
"phone": "+923032320964",
"sms_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_collected_from": "SHOPIFY"
},
"currency": "AUD",
"accepts_marketing_updated_at": "2023-03-27T23:16:50-04:00",
"default_address": {
"id": 7363751346242,
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"zip": "78601",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
},
"line_items": [
{
"id": 12241816059970,
"fulfillable_quantity": 1,
"fulfillment_service": "manual",
"gift_card": false,
"grams": 0,
"name": "Classic Nato Strap Watch - CH 0221",
"price": "24.87",
"product_exists": true,
"product_id": 1413102731330,
"quantity": 1,
"requires_shipping": true,
"sku": "1097285-ch-0221",
"taxable": false,
"title": "Classic Nato Strap Watch",
"total_discount": "0.00",
"total_discount_set": {
"shop_money": {
"amount": "0.00",
"currency_code": "AUD"
},
"presentment_money": {
"amount": "0.00",
"currency_code": "AUD"
}
},
"variant_id": 12535576723522,
"variant_inventory_management": "shopify",
"variant_title": "CH 0221",
"vendor": "hapans"
}
],
"shipping_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
}
}

Order Fulfilled

This webhook is triggered whenever the order is fulfilled from the shopify admin console. It return information such as order details and shipping tracking from merchants etc.

 

The response payload returns the following JSON.

 

{
"id": 4862145101890,
"app_id": 5092638721,
"browser_ip": "119.160.34.14",
"buyer_accepts_marketing": false,
"checkout_id": 31435950030914,
"checkout_token": "3b34065898c1c679e0283b3c8c7d5da0",
"closed_at": "2023-03-28T00:47:58-04:00",
"confirmed": true,
"created_at": "2023-03-27T23:16:50-04:00",
"currency": "AUD",
"current_subtotal_price": "24.87",
"current_total_discounts": "0.00",
"current_total_price": "44.87",
"current_total_tax": "0.00",
"customer_locale": "en",
"estimated_taxes": false,
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"gateway": "Cash on Delivery (COD)",
"location_id": 5833621570,
"name": "#1044",
"note": "f12372u15376836",
"number": 44,
"order_number": 1044,
"order_status_url": "Thank you! - CONNECTDOTS DEMO STORE - Checkout ",
"payment_gateway_names": [
"Cash on Delivery (COD)"
],
"phone": "+923032320964",
"processed_at": "2023-03-27T23:16:49-04:00",
"processing_method": "manual",
"reference": "a05cd2354ac4540796e3fe1e3c161553",
"source_identifier": "a05cd2354ac4540796e3fe1e3c161553",
"source_name": "5092638721",
"subtotal_price": "24.87",
"taxes_included": false,
"test": false,
"token": "de745afb0f9e4ce033d41035ddd1f58c",
"total_discounts": "0.00",
"total_line_items_price": "24.87",
"total_outstanding": "0.00",
"total_price": "44.87",
"total_price_usd": "29.86",
"total_tax": "0.00",
"total_tip_received": "0.00",
"total_weight": 0,
"updated_at": "2023-03-28T00:47:58-04:00",
"billing_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"created_at": "2023-03-27T18:09:49-04:00",
"updated_at": "2023-03-27T23:16:50-04:00",
"last_name": "Siddiqui",
"state": "disabled",
"verified_email": true,
"tax_exempt": false,
"phone": "+923032320964",
"sms_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_collected_from": "SHOPIFY"
},
"currency": "AUD",
"accepts_marketing_updated_at": "2023-03-27T23:16:50-04:00",
"default_address": {
"id": 7363751346242,
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"zip": "78601",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
},
"fulfillments": [
{
"id": 4365623230530,
"created_at": "2023-03-28T00:47:58-04:00",
"location_id": 5833621570,
"name": "#1044.1",
"order_id": 4862145101890,
"service": "manual",
"status": "success",
"tracking_company": "Bonds",
"tracking_number": "23123123",
"tracking_numbers": [
"23123123"
],
"tracking_url": "Bonds Express Couriers ",
"tracking_urls": [
"Bonds Express Couriers "
],
"updated_at": "2023-03-28T00:47:58-04:00",
"line_items": [
{
"id": 12241816059970,
"fulfillable_quantity": 0,
"fulfillment_service": "manual",
"fulfillment_status": "fulfilled",
"gift_card": false,
"grams": 0,
"name": "Classic Nato Strap Watch - CH 0221",
"price": "24.87",
"product_exists": true,
"product_id": 1413102731330,
"quantity": 1,
"requires_shipping": true,
"sku": "1097285-ch-0221",
"taxable": false,
"title": "Classic Nato Strap Watch",
"total_discount": "0.00",
"total_discount_set": {
"shop_money": {
"amount": "0.00",
"currency_code": "AUD"
},
"presentment_money": {
"amount": "0.00",
"currency_code": "AUD"
}
},
"variant_id": 12535576723522,
"variant_inventory_management": "shopify",
"variant_title": "CH 0221",
"vendor": "hapans"
}
]
}
],
"line_items": [
{
"id": 12241816059970,
"fulfillable_quantity": 0,
"fulfillment_service": "manual",
"fulfillment_status": "fulfilled",
"gift_card": false,
"grams": 0,
"name": "Classic Nato Strap Watch - CH 0221",
"price": "24.87",
"product_exists": true,
"product_id": 1413102731330,
"quantity": 1,
"requires_shipping": true,
"sku": "1097285-ch-0221",
"taxable": false,
"title": "Classic Nato Strap Watch",
"total_discount": "0.00",
"total_discount_set": {
"shop_money": {
"amount": "0.00",
"currency_code": "AUD"
},
"presentment_money": {
"amount": "0.00",
"currency_code": "AUD"
}
},
"variant_id": 12535576723522,
"variant_inventory_management": "shopify",
"variant_title": "CH 0221",
"vendor": "hapans"
}
],
"shipping_address": {
"address1": "test",
"city": "test",
"zip": "78601",
"country": "Pakistan",
"last_name": "Siddiqui",
"name": "Siddiqui",
"country_code": "PK"
}
}

 

Draft Order Creation

The webhook is triggered whenever a draft order is created either via an API call through the bot or from Shopify admin console directly.

 

An important note here is that the trigger uses the personal information provided by Shopify upon creation of draft order to match the bot user inside UChat. If the provided with the payload is incorrect or doesnt exist the payload is simply wasted without the trigger being fired.

 

Following response payload is received whenever the trigger is successfully fired.

{
"id": 932436770882,
"taxes_included": false,
"currency": "AUD",
"created_at": "2023-04-10T12:51:09-04:00",
"updated_at": "2023-04-10T12:51:09-04:00",
"tax_exempt": false,
"name": "#D142",
"status": "open",
"line_items": [
{
"id": 57423868919874,
"variant_id": 12535571710018,
"product_id": 1413101748290,
"title": "Tetris Console iPhone Case",
"variant_title": "White / For IP 6 6s",
"sku": "12686347-white-for-ip-6-6s",
"vendor": "hapans",
"quantity": 1,
"requires_shipping": true,
"taxable": false,
"gift_card": false,
"fulfillment_service": "manual",
"grams": 0,
"name": "Tetris Console iPhone Case - White / For IP 6 6s",
"custom": false,
"price": "25.60"
}
],
"shipping_address": {
"address1": "test",
"city": "test",
"country": "Pakistan",
"last_name": "Siddiqui",
"latitude": 30.375321,
"longitude": 69.34511599999999,
"name": "Siddiqui",
"country_code": "PK"
},
"billing_address": {
"address1": "test",
"city": "test",
"country": "Pakistan",
"last_name": "Siddiqui",
"latitude": 30.375321,
"longitude": 69.34511599999999,
"name": "Siddiqui",
"country_code": "PK"
},
"invoice_url": "https://connectdots-demo-store.myshopify.com/1763672130/invoices/ba420962c10eb92c52c0d933afae8d19",
"total_price": "25.60",
"subtotal_price": "25.60",
"total_tax": "0.00",
"payment_terms": {
"id": 5674041410,
"payment_terms_name": "Due on receipt",
"payment_terms_type": "receipt",
"created_at": "2023-04-10T12:51:09-04:00",
"updated_at": "2023-04-10T12:51:09-04:00"
},
"customer": {
"id": 5969354489922,
"accepts_marketing": false,
"created_at": "2023-03-27T18:09:49-04:00",
"updated_at": "2023-04-09T22:08:00-04:00",
"last_name": "Siddiqui",
"orders_count": 23,
"state": "disabled",
"total_spent": "1322.87",
"last_order_id": 4881087299650,
"verified_email": true,
"tax_exempt": false,
"last_order_name": "#1065",
"currency": "AUD",
"phone": "+923032320964",
"accepts_marketing_updated_at": "2023-04-09T22:08:00-04:00",
"sms_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_collected_from": "SHOPIFY"
},
"default_address": {
"id": 7364628021314,
"customer_id": 5969354489922,
"last_name": "Siddiqui",
"address1": "test",
"city": "test",
"country": "Pakistan",
"name": "Siddiqui",
"country_code": "PK",
"country_name": "Pakistan",
"default": true
}
}
}

User Creation With Triggers

 

The webhook identifies the users using phone number and email address and then matching it from the existing bot users already present. If the bot users are not found then phone number is used to create the user. If phone number is returned null, then email is used to create the user. When users are created using phone numbers, they are created under whatsapp channel by default, and when users are created using email, they are created under web channel.