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