Sending Email Notifications
Email notifications require the Starter plan or higher. See pricing
By the end of this guide, you'll have delivered gift card codes to recipients by email, and you'll know what those recipients read when they open one.
Two fields on every gift card
A gift card in your Shopify admin has two separate fields, and BatchCard fills them at different moments. Everything else in this guide follows from that.
- The customer field says who the card belongs to. A card with a customer filled in shows on that customer's profile. Filling it sends nothing.
- The recipient field says who Shopify emails. Filling it with a send time is what sends the email.
BatchCard fills the customer field for every imported row that carries an email address. It fills the recipient field only when it sends.
How email delivery works
When you turn notifications on for a batch, BatchCard triggers Shopify's built-in gift card notification email for each recipient. The email contains the gift card code, value, and a link to your store.
Deliveries run through a durable background system. They retry automatically on temporary failures and respect Shopify's rate limits on large batches, so no emails are lost or duplicated.
BatchCard does not send emails directly. It triggers Shopify's built-in gift card notification. To change the email template, go to your Shopify admin, then Settings, then Notifications.
Turn notifications on
Email notifications belong to the spreadsheet import flow. Recipients come only from an imported file, so there is nothing to turn on in the manual create form.
- Open BatchCard. In the Create gift cards card, drop your spreadsheet on the From file tile, or click Add file to browse.
- Map a Recipient Email column during the mapping step. The Email Notifications section appears only once an email column is mapped, so if you cannot find it, that is why.
- In the Email Notifications section, turn on Send notification emails to recipients.
- Click Create Batch. If your file also maps a Code column, that button reads Import N valid rows instead.
The import guide walks through all five import steps, and the format reference lists the accepted column names for Recipient Email, First Name, and Last Name.
What the email column does
Mapping an email column does two things, and only one of them sends anything.
The first happens on every import. The form states it before you press Create, and this guide uses its words:
Cards with an email address are added to N customer profiles in Shopify. Once a card is on a profile it stays there, and Shopify does not let you move it.
That holds whether the switch is on or off, because the cards reach the profiles either way.
On an import that emails at once, the form says nothing about who the email is from, and who the email says the gift card is from below explains why.
The second thing is the email, and it goes out only when the switch is on, or when you send later from the batch page.
Track delivery
Delivery status updates automatically on the batch detail page while cards are being delivered:
- Scheduled -- the email is queued for delivery
- Sent -- the email was sent (status inferred approximately 1 hour after send time)
- Failed -- the email could not be delivered (check the email address)
Result
Each recipient gets an email with their unique gift card code. You can track delivery status for every recipient from the batch detail page.
Sending later
In a batch created with notifications off, cards with an email address are already on customer profiles. Nothing was emailed. When you decide to email them, open the batch and click Send gift card emails.
That action has two arms:
- Now: BatchCard gives each card a recipient, and Shopify emails it.
- On a date (Pro and above): BatchCard gives each card a recipient and a send time, and Shopify emails it then.
Two things change the first time a batch takes a date, and you will see both:
- The batch gains the scheduled-delivery controls: Reschedule, Send now, and Cancel delivery.
- Bulk resend is held until those emails go out. The schedule controls stand in for it until then.
The send date belongs to batches emailed through Shopify. A batch emailed through Klaviyo takes its delivery time from your own Klaviyo flow, so BatchCard does not schedule it.
Who the email says the gift card is from
Shopify's default gift card email names the customer on the card as the sender, and uses your store name when the card has no customer. BatchCard adds every card carrying an email address to that customer's profile, so a card emailed after it is added reads as being from the recipient.
Which of those your recipients read is a matter of timing, not a rule BatchCard enforces.
On a batch that emails at import, Shopify sends each email within about a second of creating the card, and the cards reach customer profiles once the whole batch finishes. The emails go out first, so they name your store. That is how the timing works out, not a wait the app holds open, so read it as what you will normally see rather than as a promise.
When you turn on Schedule for later and pick a delivery date, the cards reach customer profiles as soon as the batch finishes and the emails go out on your date, which may be days later. By then every card is already on a profile, so those emails name the customer the card is assigned to, not your store. The two routes below change that wording.
When you pick that date on a batch that emails through Shopify, the import form states that consequence before you press Create, and this guide uses its words:
Cards on a customer profile are emailed as being from that customer, not from your store. You can change that wording in your Shopify admin, under Settings > Notifications.
On a batch you send later, from the batch page, the cards are already on profiles, so those emails name the recipient. The confirmation says so before you press it:
These cards are on customer profiles, so the email will say it's from the recipient, not your store. You can change that wording in your Shopify admin, under Settings > Notifications.
There are two ways to change that wording, both edits you make in your own store, and they answer different needs.
If you want your store named and would rather not touch a template, put a line naming your store in your spreadsheet's Message column, for example "A gift from your team at [your store name]". Shopify renders that message inside the email. It does not change the heading, so the greeting still names the recipient, and your template is untouched.
If you want the sender name itself to read as your store, edit Shopify's gift card template. In your Shopify admin, go to Settings, then Notifications, then Customer notifications. In the Gift cards section, click New gift card, then Edit code. Every gift card email your store sends uses that template, including cards bought on your storefront, which is why the snippet below leaves a storefront purchase alone.
Either way, map First Name and Last Name columns in your spreadsheet. Those names set the greeting in the email. They reach the customer record only when BatchCard creates that customer, so a recipient who is already a customer keeps the name Shopify holds for them. When Shopify has no name for a customer, it falls back to their email address, in the subject line as well as the greeting.
The snippet below restores your store name only when the card's customer and its recipient are the same person, which is the BatchCard case, and leaves a genuine storefront gift card purchase alone.
{% if gift_card.customer and gift_card.recipient %}
{% assign giver_email = gift_card.customer.email | downcase %}
{% assign to_email = gift_card.recipient.email | downcase %}
{% if giver_email == to_email %}
{% assign sender_name = shop.name %}
{% endif %}
{% endif %}In the Email body (HTML) box, find the line that begins {% capture email_title %}. Paste the snippet on a new line directly above it, then save.
If you cannot find that line, your template has been changed from Shopify's default, and the snippet may need to go somewhere else.
Shopify's default template works out a sender name at the top of the email body: the customer's name, then their email address, then their phone number, and your store name when the card has no customer. Further down, inside the same block, it builds the greeting from that name. Your editor should show the lines below, and the comment marks where the snippet goes.
{% if gift_card.recipient.nickname != blank %}
{% assign recipient_name = gift_card.recipient.nickname %}
{% elsif gift_card.recipient.name != blank %}
{% assign recipient_name = gift_card.recipient.name %}
{% else %}
{% assign recipient_name = gift_card.recipient.email %}
{% endif %}
{% comment %} The snippet goes here. {% endcomment %}
{% capture email_title %}
Hi {{ recipient_name }}, you have received a gift card from {{ sender_name }}.
{% endcapture %}The subject line is a second field and the snippet does not reach it. In Email subject, look for the part that begins with the word from. That part names the customer, and it appears only on a card that has one.
This snippet is offered as help. It is not a BatchCard feature. Changes to your store's notification code are outside what BatchCard supports, so the edit is yours to make and to check. If your template has already been changed, where the snippet goes may differ from what is shown here. After you save, send yourself a real gift card through BatchCard and read the email. The editor's Send test button cannot show you this, because its sample card has no recipient. If the email is not what you wanted, select Revert to, then Default, then save. If you had made your own changes to the template before, choose Previous instead, to keep them.
A batch emailed through Klaviyo skips Shopify's template entirely. It uses your own Klaviyo template, so the sender name and every other part of that email are yours to write. If your store is connected to Klaviyo, the import form notes this as well, so you know which template a batch will use before you press Create. See Klaviyo.
What recipients see
Recipients receive Shopify's standard gift card notification email. It includes the gift card code, value, and a link to your store. The template and its branding are controlled through your Shopify admin under Settings, then Notifications.
Troubleshooting
If emails are not being delivered, check:
- Email delivery issues for common solutions
- The recipient's email address for typos
- Your batch detail page for delivery status per recipient
Learn more
- Email delivery features -- full overview of email capabilities
- Schedule deliveries for a specific date and time
- Bulk resend to email a whole batch again
Ready to try this? Install BatchCard free.
Create bulk gift cards from a CSV or form. Set up your first batch in minutes.
Install Free on Shopify