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":