Does Shopify suppress order confirmation emails for Storefront API checkout orders (via import)?

Hi,

We’re using the Storefront API to create carts and redirect users to Shopify’s standard checkout page via checkoutUrl, with pre-selected products and optional discount codes.

The order gets created successfully after payment, the customer’s email is captured correctly during checkout, and everything works as expected except one thing:
Order confirmation emails are not sent automatically.

In the order timeline, the usual “Order confirmation email sent to [customer]” entry is missing.

The only notable difference is the source, which shows something like:

Direct - Checkout Links & QR (via import)

Whereas orders placed via the Online Store trigger the email properly and show the expected email activity.

Does Shopify intentionally suppress order confirmation emails for orders where the source is marked as via import, even when the checkout flow is handled entirely through Shopify’s native checkout (via Storefront API checkoutUrl)?

If so, is there any workaround for this

1 Like

Hey @Aswin_Ashok

It does seem strange that your orders are showing (via import) as that’s typically shown for orders created through the orderCreate endpoint, not orders that have used the Shopify Checkout.

Can you share the specific cartCreate mutation you’re using to set up the cart before redirecting to checkoutUrl? Also, are you using CheckoutSheetKit, hydrogen, or any other cart management tools?

I’d like to test on my end to see if I can replicate the same behaviour you are seeing.

mutation cartLinesAdd($lines: [CartLineInput!]!, $discountCodes: [String!], $attributes: [AttributeInput!],$buyerIdentity:CartBuyerIdentityInput) {
    cartCreate(input: {
      attributes: $attributes
      discountCodes: $discountCodes
      lines: $lines
      buyerIdentity:$buyerIdentity
    }) {
      cart {
        checkoutUrl
        id
        createdAt
        updatedAt
        discountAllocations{
          discountedAmount{
            amount
            currencyCode
          }  
        }
        discountCodes {
          applicable
          code
        }
        buyerIdentity {
          countryCode
        }
        lines(first: 10) {

          nodes {

            id
            quantity
            merchandise {
              ... on ProductVariant {
                id
                priceV2 {
                  amount
                  currencyCode
                }
                compareAtPriceV2 {
                  amount
                  currencyCode
                }
                title
                product {
                  id
                  images(first: 2) {
                    edges {
                      node {
                        src
                      }
                    }
                  }
                  title
                  variants(first: 10) {
                    edges {
                      node {
                        id
                        title
                        priceV2 {
                          amount
                          currencyCode
                        }
                        availableForSale
                      }
                    }
                  }
                }
              }
            }
          }
        }
        cost {
          totalAmount {
            amount
            currencyCode
          }
          subtotalAmount {
            amount
            currencyCode
          }
          totalTaxAmount {
            amount
            currencyCode
          }
          totalDutyAmount {
            amount
            currencyCode
          }
        }
      }
      userErrors {
        field
        message
      }
    }
  }

We are using this storefront api graphql mutation to create a cart with some products as input. I think usually it should place an normal online store order, but for some reason order placed via this checkout url is treated as order import in shopify.

Thanks for sharing that. I was trying to replicate here and when I checkout using the generated checkoutURL, the order is properly processed and does not show via import.

What I would recommend here is to reach out to our support teams directly. They would be able to look in to that specific order to identify why notifications weren’t sent and why it’s showing as an import as opposed to just being attributed to the channel it’s being placed on.

Thanks for confirming. What I found is that the source is shown as the app ID instead of “web.” just sharing my findings

1 Like