forked from lightward/mechanic-tasks
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemail-the-customer-when-tracking-numbers-are-added-to-their-order.json
25 lines (25 loc) · 4.19 KB
/
email-the-customer-when-tracking-numbers-are-added-to-their-order.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"docs": "Use this task with services that add tracking numbers to fulfillments after fulfillments are created, to ensure that customers are notified when their tracking number is available.\n\nThis task works by monitoring created and updated fulfillments. It scans for and saves the tracking numbers currently available for an order, and whenever that set changes, it sends an email to the customer.\n\nUse \"TRACKING_NUMBERS\" in your email body to insert a list of tracking numbers for the customer's order. Or, use \"{{ fulfillment.tracking_number }}\", to insert the single tracking number of the fulfillment that has just been created or updated.\n\n[YouTube: Watch the development video!](https://youtu.be/W9VztafUY84)",
"halt_action_run_sequence_on_error": false,
"name": "Email the customer when tracking numbers are added to their order",
"online_store_javascript": null,
"options": {
"email_subject__required": "Shipping update for order {{ fulfillment.order.name | default: \"(number)\" }}",
"email_body__required_multiline": "Hello customer,\n\nTrack your package: TRACKING_NUMBERS\n\nThanks,\n{{ shop.name }}"
},
"order_status_javascript": null,
"perform_action_runs_in_sequence": false,
"script": "{% assign existing_metafield = fulfillment.order.metafields.mechanic | where: \"key\", \"known_tracking_numbers\" | first %}\n\n{% if event.preview %}\n {% capture fulfillment_json %}\n {\n \"order\": {\n \"email\": \"[email protected]\",\n \"metafields\": {\n \"mechanic\": {\n \"known_tracking_numbers\": []\n }\n },\n \"fulfillments\": [\n {\n \"tracking_numbers\": [\"ABC123\"]\n }\n ]\n }\n }\n {% endcapture %}\n\n {% assign fulfillment = fulfillment_json | parse_json %}\n \n {% assign existing_metafield = hash %}\n {% assign existing_metafield[\"id\"] = 1234567890 %}\n{% endif %}\n \n{% assign already_known_tracking_numbers = fulfillment.order.metafields.mechanic.known_tracking_numbers | default: array %}\n\n{% assign currently_known_tracking_numbers = array %}\n{% for some_fulfillment in fulfillment.order.fulfillments %}\n {% assign currently_known_tracking_numbers = currently_known_tracking_numbers | concat: some_fulfillment.tracking_numbers %}\n{% endfor %}\n\n{% assign tracking_numbers_changed = false %}\n{% for tracking_number in currently_known_tracking_numbers %}\n {% unless already_known_tracking_numbers contains tracking_number %}\n {% assign tracking_numbers_changed = true %}\n {% break %}\n {% endunless %}\n{% endfor %}\n\n{% if tracking_numbers_changed or existing_metafield == nil %}\n {% if existing_metafield %}\n {% if fulfillment.order.email == blank %}\n {% log \"No email on file for this order.\" %}\n {% else %}\n {% assign tracking_numbers_string = currently_known_tracking_numbers | join: \", \" %}\n {% action \"email\" %}\n {\n \"to\": {{ fulfillment.order.email | json }},\n \"subject\": {{ options.email_subject__required | json }},\n \"body\": {{ options.email_body__required_multiline | replace: \"TRACKING_NUMBERS\", tracking_numbers_string | strip | newline_to_br | json }},\n \"reply_to\": {{ shop.customer_email | json }},\n \"from_display_name\": {{ shop.name | json }}\n }\n {% endaction %}\n {% endif %}\n {% endif %}\n\n {% action \"shopify\" %}\n [\n \"update\",\n [\n \"order\",\n {{ fulfillment.order.id | json }}\n ],\n {\n \"metafields\": [\n {\n {% if existing_metafield %}\"id\": {{ existing_metafield.id | json }},{% endif %}\n \"namespace\": \"mechanic\",\n \"key\": \"known_tracking_numbers\",\n \"value\": {{ currently_known_tracking_numbers | json | json }},\n \"type\": \"json\"\n }\n ]\n }\n ]\n {% endaction %}\n{% endif %}",
"subscriptions": [
"shopify/fulfillments/create",
"shopify/fulfillments/update"
],
"subscriptions_template": "shopify/fulfillments/create\nshopify/fulfillments/update",
"tags": [
"Customers",
"Email",
"Orders",
"Shipping",
"Tracking"
]
}