Skip to main content

SendGrid

In this document, you’ll learn about the SendGrid plugin, what it does, and how to use it.

Overview

SendGrid is an email and notification service that can be used to send emails to your customers and users.

By integrating SendGrid with Medusa, you’ll be sending email notifications to your users in the following cases:

  1. Order-related events include new orders, shipments created, and orders canceled.
  2. Swaps and Returns related events including new return requests of orders and items returned successfully.
  3. When Gift Cards in an order are created.
  4. User-related events including reset passwords.
  5. Restock Notifications for when product stocks are low.

Prerequisites

Before going further with this guide make sure you have a Medusa backend set up. You can follow the Quickstart guide. The Medusa backend must also have an event bus module installed, which is available when using the default Medusa backend starter.


Create a SendGrid Account

If you don’t have a SendGrid account, make sure to create one first. You also need to set up a single sender first in SendGrid before you can start sending emails.

API Key

For the integration to work, you need to create an API key in your SendGrid account.

You can do that by choosing from the sidebar of your SendGrid dashboard Settings > API Keys. Then, click on Create API Key.

If you choose to give the API Key restricted access, make sure to at least give it the “Mail Send” access.

Once you create the API key, the key will be shown for one time only. Make sure to copy and save it somewhere for later usage.

Email Templates

The SendGrid plugin uses SendGrid templates to send emails. If you don’t provide the plugin with the templates necessary then emails will not be sent.

To create an email template, go to Email API > Dynamic Templates. Then, click “Create a Dynamic Template”. You’ll then be able to see the Template ID which you’ll need for your plugin setup.

When you create the dynamic templates you’ll be able to use variables sent from Medusa using Handlebars.

For a full list of templates and their variables please check out the Template Reference.

Medusa supports localization so you can also create multiple templates for multiple languages.


Template Reference

This section covers the template types supported by the plugin and what variables you can expect in your dynamic template. You can use the variables to add details like order total or customer name.

You don’t have to create a template for every type in the reference. You can simply create templates for the type of emails you want to send using Medusa and SendGrid,

Order Placed

Key in plugin options: order_placed_template

Description: Template to be sent to the customer when they place a new order.

Example Data
{
"beforeInsert": [Function],
"billing_address": null,
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"claims": Array [],
"created_at": Any<Date>,
"currency_code": "usd",
"customer": Object {
"billing_address_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"email": "test@testson.com",
"first_name": null,
"has_account": false,
"id": Any<String>,
"last_name": null,
"metadata": null,
"phone": null,
"updated_at": Any<Date>,
},
"customer_id": Any<String>,
"date": Any<String>,
"discount_total": "0.00 USD",
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"fulfillments": Array [],
"gift_card_total": "0.00 USD",
"gift_card_transactions": Array [],
"gift_cards": Array [],
"has_discounts": 0,
"has_gift_cards": 0,
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"discounted_price": "12.00 USD",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": "test-item",
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "12.00 USD",
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"totals": Object {
"discount_total": 0,
"gift_card_total": 0,
"original_tax_total": 400,
"original_total": 2400,
"quantity": 2,
"subtotal": 2000,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"tax_total": 400,
"total": 2400,
"unit_price": 1000,
},
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"locale": null,
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"payments": Array [],
"refunded_total": 0,
"refunds": Array [],
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": "test-region",
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"returns": Array [],
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [],
"shipping_total": "0.00 USD",
"status": "pending",
"subtotal": "24.00 USD",
"subtotal_ex_tax": "20.00 USD",
"swaps": Array [],
"tax_rate": null,
"tax_total": "4.00 USD",
"total": "24.00 USD",
"updated_at": Any<Date>,
}

Order Canceled

Key in plugin options: order_canceled_template

Description: Template to be sent to a customer when their order is canceled.

Example Data
{
"beforeInsert": [Function],
"billing_address": null,
"billing_address_id": null,
"canceled_at": Any<Date>,
"cart_id": null,
"claims": Array [],
"created_at": Any<Date>,
"currency_code": "usd",
"customer": Object {
"billing_address_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"email": "test@testson.com",
"first_name": null,
"has_account": false,
"id": Any<String>,
"last_name": null,
"metadata": null,
"phone": null,
"updated_at": Any<Date>,
},
"customer_id": Any<String>,
"date": Any<String>,
"discount_total": "0.00 USD",
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "canceled",
"fulfillments": Array [],
"gift_card_total": "0.00 USD",
"gift_card_transactions": Array [],
"gift_cards": Array [],
"has_discounts": 0,
"has_gift_cards": 0,
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": null,
"has_shipping": null,
"id": "test-item",
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "10.00 USD",
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": null,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 12,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"locale": null,
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "canceled",
"payments": Array [],
"refunded_total": 0,
"refunds": Array [],
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": "test-region",
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"returns": Array [],
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [
Object {
"cart_id": null,
"claim_order_id": null,
"data": Object {},
"id": Any<String>,
"order_id": Any<String>,
"price": 0,
"return_id": null,
"shipping_option": Object {
"admin_only": false,
"amount": 500,
"created_at": Any<Date>,
"data": Object {},
"deleted_at": null,
"id": Any<String>,
"is_return": false,
"metadata": null,
"name": "free",
"price_type": "flat_rate",
"profile_id": Any<String>,
"provider_id": "test-ful",
"region_id": "test-region",
"updated_at": Any<Date>,
},
"shipping_option_id": Any<String>,
"swap_id": null,
"tax_lines": Array [],
},
],
"shipping_total": "0.00 USD",
"status": "canceled",
"subtotal": "20.00 USD",
"swaps": Array [],
"tax_rate": null,
"tax_total": "4.00 USD",
"total": "24.00 USD",
"updated_at": Any<Date>,
}

Order Shipment Created

Key in plugin options: order_shipped_template

Description: Template to be sent to the customer when a shipment of their order has been created.

Example Data
{
"date": Any<String>,
"email": "test@testson.com",
"fulfillment": Object {
"canceled_at": null,
"claim_order_id": null,
"created_at": Any<Date>,
"data": Object {},
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"fulfillment_id": Any<String>,
"item_id": "test-item",
"quantity": 2,
},
],
"metadata": Object {},
"no_notification": null,
"order_id": Any<String>,
"provider_id": "test-ful",
"shipped_at": Any<Date>,
"swap_id": null,
"tracking_links": Array [],
"tracking_numbers": Array [],
"updated_at": Any<Date>,
},
"locale": null,
"order": Object {
"beforeInsert": [Function],
"billing_address": null,
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"claims": Array [],
"created_at": Any<Date>,
"currency_code": "usd",
"customer": Object {
"billing_address_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"email": "test@testson.com",
"first_name": null,
"has_account": false,
"id": Any<String>,
"last_name": null,
"metadata": null,
"phone": null,
"updated_at": Any<Date>,
},
"customer_id": Any<String>,
"discount_total": 0,
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "shipped",
"fulfillments": Array [
Object {
"canceled_at": null,
"claim_order_id": null,
"created_at": Any<Date>,
"data": Object {},
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"fulfillment_id": Any<String>,
"item_id": "test-item",
"quantity": 2,
},
],
"metadata": Object {},
"no_notification": null,
"order_id": Any<String>,
"provider_id": "test-ful",
"shipped_at": Any<Date>,
"swap_id": null,
"tracking_numbers": Array [],
"updated_at": Any<Date>,
},
],
"gift_card_total": 0,
"gift_card_transactions": Array [],
"gift_cards": Array [],
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": "test-item",
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"payments": Array [],
"refundable_amount": 0,
"refunded_total": 0,
"refunds": Array [],
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": "test-region",
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"returns": Array [],
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [
Object {
"cart_id": null,
"claim_order_id": null,
"data": Object {},
"id": Any<String>,
"order_id": Any<String>,
"price": 0,
"return_id": null,
"shipping_option": Object {
"admin_only": false,
"amount": 500,
"created_at": Any<Date>,
"data": Object {},
"deleted_at": null,
"id": Any<String>,
"is_return": false,
"metadata": null,
"name": "free",
"price_type": "flat_rate",
"profile_id": Any<String>,
"provider_id": "test-ful",
"region_id": "test-region",
"updated_at": Any<Date>,
},
"shipping_option_id": Any<String>,
"swap_id": null,
"tax_lines": Array [],
},
],
"shipping_total": 0,
"status": "pending",
"subtotal": 2000,
"swaps": Array [],
"tax_rate": null,
"tax_total": 400,
"total": 2400,
"updated_at": Any<Date>,
},
"tracking_links": Array [],
"tracking_number": "",
}

Order Return Requested

Key in plugin options: order_return_requested_template

Description: Template to be sent to the customer when a return request is made for an order.

Example Data
{
"date": Any<String>,
"email": "test@testson.com",
"has_shipping": false,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "12.00 USD",
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"totals": Object {
"discount_total": 0,
"gift_card_total": 0,
"original_tax_total": 200,
"original_total": 1200,
"quantity": 1,
"subtotal": 1000,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"tax_total": 200,
"total": 1200,
"unit_price": 1000,
},
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"locale": null,
"order": Object {
"beforeInsert": [Function],
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"claims": Array [],
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"gift_card_transactions": Array [],
"gift_cards": Array [],
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"refunds": Array [],
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": Any<String>,
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"returns": Array [
Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": null,
"refund_amount": 1200,
"shipping_data": null,
"status": "requested",
"swap_id": null,
"updated_at": Any<Date>,
},
],
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [],
"status": "pending",
"swaps": Array [],
"tax_rate": null,
"total": 2400,
"updated_at": Any<Date>,
},
"refund_amount": "12.00 USD",
"return_request": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item": Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": null,
"refund_amount": "12.00 USD",
"shipping_data": null,
"shipping_method": null,
"status": "requested",
"swap_id": null,
"updated_at": Any<Date>,
},
"shipping_total": "0.00 USD",
"subtotal": "12.00 USD",
}

Order Items Returned

Key in plugin options: order_items_returned_template

Description: Template to be sent to the customer when an order’s items have been returned.

Example Data
{
"date": Any<String>,
"email": "test@testson.com",
"has_shipping": false,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "12.00 USD",
"quantity": 1,
"returned_quantity": 1,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"totals": Object {
"discount_total": 0,
"gift_card_total": 0,
"original_tax_total": 200,
"original_total": 1200,
"quantity": 1,
"subtotal": 1000,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"tax_total": 200,
"total": 1200,
"unit_price": 1000,
},
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 11,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"locale": null,
"order": Object {
"beforeInsert": [Function],
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"claims": Array [],
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "requires_action",
"gift_card_transactions": Array [],
"gift_cards": Array [],
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": 1,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 11,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"refunds": Array [],
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": Any<String>,
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"returns": Array [
Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": Any<Date>,
"refund_amount": 1200,
"shipping_data": null,
"status": "received",
"swap_id": null,
"updated_at": Any<Date>,
},
],
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [],
"status": "pending",
"swaps": Array [],
"tax_rate": null,
"total": 2400,
"updated_at": Any<Date>,
},
"refund_amount": "12.00 USD",
"return_request": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item": Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": 1,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 11,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": Any<Date>,
"refund_amount": "12.00 USD",
"shipping_data": null,
"shipping_method": null,
"status": "received",
"swap_id": null,
"updated_at": Any<Date>,
},
"shipping_total": "0.00 USD",
"subtotal": "12.00 USD",
}

Claim Shipment Created

Key in plugin options: claim_shipment_created_template

Description: Template to be sent to the customer when a Claim shipment has been created.

Example Data
{
"claim": Object {
"canceled_at": null,
"created_at": Any<Date>,
"deleted_at": null,
"fulfillment_status": "shipped",
"id": Any<String>,
"idempotency_key": Any<String>,
"metadata": null,
"no_notification": null,
"order": Object {
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region_id": "test-region",
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"status": "pending",
"tax_rate": null,
"updated_at": Any<Date>,
},
"order_id": Any<String>,
"payment_status": "na",
"refund_amount": null,
"shipping_address_id": Any<String>,
"type": "replace",
"updated_at": Any<Date>,
},
"email": "test@testson.com",
"fulfillment": Object {
"canceled_at": null,
"claim_order_id": Any<String>,
"created_at": Any<Date>,
"data": Object {},
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"fulfillment_id": Any<String>,
"item_id": Any<String>,
"quantity": 1,
},
],
"metadata": Object {},
"no_notification": null,
"order_id": null,
"provider_id": "test-ful",
"shipped_at": Any<Date>,
"swap_id": null,
"tracking_links": Array [],
"tracking_numbers": Array [],
"updated_at": Any<Date>,
},
"locale": null,
"order": Object {
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region_id": "test-region",
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"status": "pending",
"tax_rate": null,
"updated_at": Any<Date>,
},
"tracking_links": Array [],
"tracking_number": "",
}

Swap Created

Key in plugin options: swap_created_template

Description: Template to be sent to the customer when a swap for an order has been created.

Example Data
{
"locale": null,
"swap": Object {
"additional_items": Array [
Object {
"allow_discounts": true,
"cart_id": Any<String>,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "Small Wooden Computer",
"fulfilled_quantity": 1,
"has_shipping": true,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": Object {},
"order_id": null,
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 1,
"should_merge": true,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Awesome Metal Ball",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "variant-2",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Small Wooden Computer",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "variant-2",
},
],
"return_order": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"is_requested": true,
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": null,
"received_at": null,
"refund_amount": 1200,
"shipping_data": null,
"status": "requested",
"swap_id": Any<String>,
"updated_at": Any<Date>,
},
"allow_backorder": true,
"canceled_at": null,
"cart_id": Any<String>,
"confirmed_at": Any<Date>,
"created_at": Any<Date>,
"deleted_at": null,
"difference_due": 488,
"fulfillment_status": "shipped",
"id": Any<String>,
"idempotency_key": Any<String>,
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"payment_status": "awaiting",
"shipping_address_id": Any<String>,
"updated_at": Any<Date>,
},
"order": Object {
"discounts": Array [],
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region_id": "test-region",
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"status": "pending",
"tax_rate": null,
"updated_at": Any<Date>,
"swaps": Array [],
},
"return_request": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item": Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": 1,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 11,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": Any<Date>,
"refund_amount": "12.00 USD",
"shipping_data": null,
"shipping_method": null,
"status": "received",
"swap_id": null,
"updated_at": Any<Date>,
},
"date": Any<String>,
"swapLink": Any<String>,
"email": "test@testson.com",
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"discounted_price": "12.00 USD",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": "test-item",
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "12.00 USD",
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"totals": Object {
"discount_total": 0,
"gift_card_total": 0,
"original_tax_total": 400,
"original_total": 2400,
"quantity": 2,
"subtotal": 2000,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"tax_total": 400,
"total": 2400,
"unit_price": 1000,
},
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"return_items": Array[...], //same as items
"return_total": "12.00 USD",
"refund_amount": "12.00 USD",
"additional_total": "11.25 USD"
}

Swap Shipment Created

Key in plugin options: swap_shipment_created_template

Description: Template to be sent to the customer when a shipment of a swap of an order has been created.

Example Data
Object {
"additional_total": "16.88 USD",
"date": Any<String>,
"email": "test@testson.com",
"fulfillment": Object {
"canceled_at": null,
"claim_order_id": null,
"created_at": Any<Date>,
"data": Object {},
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"fulfillment_id": Any<String>,
"item_id": Any<String>,
"quantity": 1,
},
],
"metadata": Object {},
"no_notification": null,
"order_id": null,
"provider_id": "test-ful",
"shipped_at": Any<Date>,
"swap_id": Any<String>,
"tracking_links": Array [],
"tracking_numbers": Array [],
"updated_at": Any<Date>,
},
"items": Array [
Object {
"allow_discounts": true,
"cart_id": Any<String>,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "Small Wooden Computer",
"discounted_price": "11.25 USD",
"fulfilled_quantity": 1,
"has_shipping": true,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": Object {},
"order_id": null,
"price": "11.25 USD",
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 1,
"should_merge": true,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Awesome Metal Ball",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "variant-2",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Small Wooden Computer",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "variant-2",
},
],
"locale": null,
"order": Object {
"beforeInsert": [Function],
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"discounts": Array [],
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": Any<String>,
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"shipping_address_id": Any<String>,
"status": "pending",
"swaps": Array [
Object {
"additional_items": Array [
Object {
"allow_discounts": true,
"cart_id": Any<String>,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "Small Wooden Computer",
"fulfilled_quantity": 1,
"has_shipping": true,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": Object {},
"order_id": null,
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 1,
"should_merge": true,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Awesome Metal Ball",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "variant-2",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Small Wooden Computer",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "variant-2",
},
],
"allow_backorder": true,
"canceled_at": null,
"cart_id": Any<String>,
"confirmed_at": Any<Date>,
"created_at": Any<Date>,
"deleted_at": null,
"difference_due": 488,
"fulfillment_status": "shipped",
"id": Any<String>,
"idempotency_key": Any<String>,
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"payment_status": "awaiting",
"shipping_address_id": Any<String>,
"updated_at": Any<Date>,
},
],
"tax_rate": null,
"updated_at": Any<Date>,
},
"paid_total": "4.88 USD",
"refund_amount": "12.00 USD",
"return_total": "12.00 USD",
"swap": Object {
"additional_items": Array [
Object {
"allow_discounts": true,
"cart_id": Any<String>,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "Small Wooden Computer",
"fulfilled_quantity": 1,
"has_shipping": true,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": Object {},
"order_id": null,
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 1,
"should_merge": true,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Awesome Metal Ball",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "variant-2",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Small Wooden Computer",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "variant-2",
},
],
"allow_backorder": true,
"beforeInsert": [Function],
"canceled_at": null,
"cart_id": Any<String>,
"confirmed_at": Any<Date>,
"created_at": Any<Date>,
"deleted_at": null,
"difference_due": 488,
"fulfillment_status": "shipped",
"id": Any<String>,
"idempotency_key": Any<String>,
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"payment_status": "awaiting",
"return_order": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"is_requested": true,
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": null,
"received_at": null,
"refund_amount": 1200,
"shipping_data": null,
"status": "requested",
"swap_id": Any<String>,
"updated_at": Any<Date>,
},
"shipping_address": Object {
"address_1": "121 W Something St",
"address_2": null,
"city": "ville la something",
"company": null,
"country_code": null,
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": null,
"id": Any<String>,
"last_name": null,
"metadata": null,
"phone": "12353245",
"postal_code": "1234",
"province": "something",
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"shipping_methods": Array [
Object {
"cart_id": Any<String>,
"claim_order_id": null,
"data": Object {},
"id": Any<String>,
"order_id": null,
"price": 500,
"return_id": null,
"shipping_option": Object {
"admin_only": false,
"amount": 500,
"created_at": Any<Date>,
"data": Object {},
"deleted_at": null,
"id": Any<String>,
"is_return": false,
"metadata": null,
"name": "Test Method",
"price_type": "flat_rate",
"profile_id": Any<String>,
"provider_id": "test-ful",
"region_id": "test-region",
"updated_at": Any<Date>,
},
"shipping_option_id": Any<String>,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"shipping_method_id": Any<String>,
"updated_at": Any<Date>,
},
],
},
],
"updated_at": Any<Date>,
},
"tax_amount": "-0.12 USD",
"tracking_links": Array [],
"tracking_number": "",
}

Swap Received

Key in plugin options: swap_received_template

Description: Template to be sent to the customer when a swap of an order has been received.

Example Data
{
"locale": null,
"swap": Object {
"additional_items": Array [
Object {
"allow_discounts": true,
"cart_id": Any<String>,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "Small Wooden Computer",
"fulfilled_quantity": 1,
"has_shipping": true,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": Object {},
"order_id": null,
"quantity": 1,
"returned_quantity": null,
"shipped_quantity": 1,
"should_merge": true,
"swap_id": Any<String>,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": Any<String>,
"metadata": null,
"name": "default",
"rate": 12.5,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Awesome Metal Ball",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "variant-2",
"inventory_quantity": 9,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Small Wooden Computer",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "variant-2",
},
],
"return_order": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"is_requested": true,
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": null,
"received_at": null,
"refund_amount": 1200,
"shipping_data": null,
"status": "requested",
"swap_id": Any<String>,
"updated_at": Any<Date>,
},
"allow_backorder": true,
"canceled_at": null,
"cart_id": Any<String>,
"confirmed_at": Any<Date>,
"created_at": Any<Date>,
"deleted_at": null,
"difference_due": 488,
"fulfillment_status": "shipped",
"id": Any<String>,
"idempotency_key": Any<String>,
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"payment_status": "awaiting",
"shipping_address_id": Any<String>,
"updated_at": Any<Date>,
},
"order": Object {
"discounts": Array [],
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region_id": "test-region",
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"status": "pending",
"tax_rate": null,
"updated_at": Any<Date>,
"swaps": Array [],
},
"return_request": Object {
"claim_order_id": null,
"created_at": Any<Date>,
"id": Any<String>,
"idempotency_key": Any<String>,
"items": Array [
Object {
"is_requested": true,
"item": Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": 1,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 11,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
"item_id": "test-item",
"metadata": null,
"note": null,
"quantity": 1,
"reason_id": null,
"received_quantity": null,
"requested_quantity": 1,
"return_id": Any<String>,
},
],
"metadata": null,
"no_notification": null,
"order_id": Any<String>,
"received_at": Any<Date>,
"refund_amount": "12.00 USD",
"shipping_data": null,
"shipping_method": null,
"status": "received",
"swap_id": null,
"updated_at": Any<Date>,
},
"date": Any<String>,
"swapLink": Any<String>,
"email": "test@testson.com",
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"discounted_price": "12.00 USD",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": "test-item",
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"price": "12.00 USD",
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"thumbnail": null,
"title": "Intelligent Plastic Chips",
"totals": Object {
"discount_total": 0,
"gift_card_total": 0,
"original_tax_total": 400,
"original_total": 2400,
"quantity": 2,
"subtotal": 2000,
"tax_lines": Array [
Object {
"code": "default",
"created_at": Any<Date>,
"id": Any<String>,
"item_id": "test-item",
"metadata": null,
"name": "default",
"rate": 20,
"updated_at": Any<Date>,
},
],
"tax_total": 400,
"total": 2400,
"unit_price": 1000,
},
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"return_items": Array[...], //same as items
"return_total": "12.00 USD",
"tax_total": "4.00 USD",
"refund_amount": "12.00 USD",
"additional_total": "11.25 USD"
}

Gift Card Created

Key in plugin options: gift_card_created_template

Description: Template to be to the customer sent when a gift card in their order has been created.

Example Data
Object {
"code": Any<String>,
"value": 100,
"balance": 100,
"display_value": "100.00",
"region": Object {
"automatic_taxes": true,
"created_at": Any<Date>,
"currency_code": "usd",
"deleted_at": null,
"fulfillment_providers": Array [],
"gift_cards_taxable": true,
"id": Any<String>,
"metadata": null,
"name": "Test region",
"payment_providers": Array [
PaymentProvider {
"id": "test-pay",
"is_installed": true,
},
],
"tax_code": null,
"tax_provider_id": null,
"tax_rate": 12.5,
"updated_at": Any<Date>,
},
"region_id": "test-region",
"order": Object {
"billing_address_id": null,
"canceled_at": null,
"cart_id": null,
"created_at": Any<Date>,
"currency_code": "usd",
"customer_id": Any<String>,
"display_id": Any<Number>,
"draft_order_id": null,
"email": "test@testson.com",
"external_id": null,
"fulfillment_status": "fulfilled",
"id": Any<String>,
"idempotency_key": null,
"items": Array [
Object {
"allow_discounts": true,
"cart_id": null,
"claim_order_id": null,
"created_at": Any<Date>,
"description": "",
"fulfilled_quantity": 2,
"has_shipping": null,
"id": Any<String>,
"is_giftcard": false,
"is_return": false,
"metadata": null,
"order_id": Any<String>,
"quantity": 2,
"returned_quantity": null,
"shipped_quantity": 2,
"should_merge": true,
"swap_id": null,
"thumbnail": "",
"title": "Intelligent Plastic Chips",
"unit_price": 1000,
"updated_at": Any<Date>,
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
},
],
"metadata": null,
"no_notification": null,
"object": "order",
"payment_status": "captured",
"region_id": "test-region",
"shipping_address": Object {
"address_1": "84185 Lindsey Centers",
"address_2": null,
"city": null,
"company": null,
"country_code": "us",
"created_at": Any<Date>,
"customer_id": null,
"deleted_at": null,
"first_name": "Chyna",
"id": Any<String>,
"last_name": "Osinski",
"metadata": null,
"phone": null,
"postal_code": "51510",
"province": null,
"updated_at": Any<Date>,
},
"shipping_address_id": Any<String>,
"status": "pending",
"tax_rate": null,
"updated_at": Any<Date>,
},
"order_id": Any<String>,
"is_disabled": false,
"created_at": Any<Date>,
"updated_at": Any<Date>,
"deleted_at": null,
"locale": null,
"email": "test@testson.com",
"display_value": 4
}

Customer Password Reset

Key in plugin options: customer_password_reset_template

Description: Template to be sent to the customer when they request a password reset.

Example Data
Object {
"id": Any<String>,
"email": "test@testson.com",
"first_name": "Chyna",
"last_name": "Osinski",
"token": Any<String>,
}

User Password Reset

Key in plugin options: user_password_reset_template

Description: Template to be sent to the admin user when they request a password reset.

Example Data
Object {
"email": "test@testson.com",
"token": Any<String>,
}

Restock Notification

Key in plugin options: medusa_restock_template

Description: Template to be sent to admin users when a product has hit the restock quantity threshold.

Example Data
Object {
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": "",
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant": Object {
"allow_backorder": false,
"barcode": null,
"created_at": Any<Date>,
"deleted_at": null,
"ean": null,
"height": null,
"hs_code": null,
"id": "test-variant",
"inventory_quantity": 10,
"length": null,
"manage_inventory": true,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"product": Object {
"collection_id": null,
"created_at": Any<Date>,
"deleted_at": null,
"description": null,
"discountable": true,
"external_id": null,
"handle": null,
"height": null,
"hs_code": null,
"id": "test-product",
"is_giftcard": false,
"length": null,
"material": null,
"metadata": null,
"mid_code": null,
"origin_country": null,
"profile_id": Any<String>,
"status": "draft",
"subtitle": null,
"thumbnail": null,
"title": "Awesome Metal Ball",
"type_id": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"product_id": "test-product",
"sku": null,
"title": "Practical Granite Pizza",
"upc": null,
"updated_at": Any<Date>,
"weight": null,
"width": null,
},
"variant_id": "test-variant",
"emails": Array [
"test@testson.com"
]
}

Install the SendGrid Plugin

In the directory of your Medusa backend run the following command to install the SendGrid plugin:

npm install medusa-plugin-sendgrid

Then, in your .env file add the API key you created earlier as well as the send from email:

SENDGRID_API_KEY=<API_KEY>
SENDGRID_FROM=<SEND_FROM_EMAIL>

Make sure to replace the <API_KEY> with the SendGrid API key and the <SEND_FROM_EMAIL> with the email you’re using in SendGrid as the single sender.

Also, you should add the ID of each template you create in .env as well. For example:

SENDGRID_ORDER_PLACED_ID=<ORDER_PLACED_TEMPLATE_ID>

Where <ORDER_PLACED_TEMPLATE_ID is the ID of your template for order placed emails.

Finally, in your medusa-config.js file, add the SendGrid plugin into the array of plugins:

medusa-config.js
const plugins = [
// ...,
{
resolve: `medusa-plugin-sendgrid`,
options: {
api_key: process.env.SENDGRID_API_KEY,
from: process.env.SENDGRID_FROM,
order_placed_template:
process.env.SENDGRID_ORDER_PLACED_ID,
localization: {
"de-DE": { // locale key
order_placed_template:
process.env.SENDGRID_ORDER_PLACED_ID_LOCALIZED,
},
},
},
},
]

The api_key and from options are required. Then, use the key of each template you create (from the reference) as the option name with the template ID as the value.

You can also optionally pass the option localization if you want to support different languages. localization accepts an object that has the country and language codes as keys. The value for each code should be an object of template keys and their IDs as values. Make sure to include the localized template IDs in .env as well.


Test it Out

Run your backend now:

npm run start

To test it out, perform an action that would trigger one of the emails being sent. For example, you can use your Medusa storefront to create an order. An email from your SendGrid account will be sent to the customer email.

If you don’t have a storefront installed, check out the Next.js starter storefront.

You can also track analytics related to emails sent from the SendGrid dashboard.

SendGrid Analytics


Dynamic usage

You can resolve the SendGrid service to send emails from your custom services or other resources. For example:

const sendgridService = scope.resolve("sendgridService")
const sendOptions = {
templateId: "d-123....",
from: "ACME <acme@mail.com>",
to: "customer@mail.com",
data: { dynamic: "data" },
}

sendgridService.sendEmail(sendOptions)

See Also