# Birthday Gift Cards

Birthday Gift Cards automatically sends a gift card to customers on (or around) their birthday. The campaign uses a customer query to find customers with matching birthdays each time it runs, then creates and delivers a personalized gift card to each one.

**Each birthday gift card costs 5 campaign credits.**

### 💡Common Use Cases

**Daily Birthday Campaign** — Send a $10 gift card to every customer on their actual birthday, every day at 9:00 AM. Perfect for: Stores with a large customer base who want to celebrate every customer's birthday.

**Monthly Birthday Campaign** — Send a $15 gift card to all customers with birthdays in the current month, on the 1st day of each month. Perfect for: Smaller stores or those who want to batch birthday communications.

**VIP Birthday Rewards** — Send a $25 gift card to VIP customers only on their birthdays. Perfect for: Rewarding your most valuable customers with special birthday treatment.

**Birthday Month Welcome** — Send a gift card at the beginning of the month to all customers with birthdays that month. Perfect for: Building anticipation and encouraging purchases throughout the birthday month.

**Regional Birthday Campaign** — Send birthday gift cards to customers in specific locations with region-appropriate values. Perfect for: Stores with different strategies for different markets.

### How It Works

1. The campaign runs on your configured schedule (e.g., daily at 9 AM)
2. It executes a Shopify customer query that you define — this query is evaluated with today's date to match customers whose birthday is today (or this month, etc.)
3. For each matching customer, a gift card is created and delivered via your chosen method
4. Results are logged in the campaign run history

### Creating a Campaign

Navigate to **Campaigns > New Campaign > Birthday Gift Cards** to create a new campaign.

#### Title

Give your campaign a descriptive name (e.g., "Daily Birthday $10 Gift Card"). This is for your own reference only.

#### Customer Query

This is the most important field — it defines which customers receive a birthday gift card each time the campaign runs.

The query uses **Shopify's customer search syntax** with **Liquid date filters** that are evaluated at run time. This lets you write dynamic queries that match customers based on today's date.

**Example — match customers whose birthday is today:**

**Example — tags in `birthday-MM-DD` format** (e.g., `birthday-06-07`):

```
tag:birthday-{{ "now" | date: "%m-%d"}}
```

When the campaign runs on June 7th, the Liquid template renders to `tag:birthday-06-07`, matching customers with that exact tag. This is the recommended tag format because it allows a clean exact match.

**Important: Shopify search only supports prefix wildcards** (e.g., `birthday-*`), not suffix wildcards (e.g., `*06-07`). This means you cannot use a wildcard to match the date portion at the end of a tag. Your tag format must put the known prefix first, followed by the dynamic date part.

**What about `dob:YYYY-MM-DD` tags?** (e.g., `dob:1992-06-07`)

This is a common format used by birthday collection apps. However, because the year varies per customer, you cannot match just the month-day part with a Shopify search query — suffix wildcards like `dob:*06-07` are not supported.

If your customers have `dob:` tags, you have two options:

* **Add a second tag** in `birthday-MM-DD` format (e.g., use Shopify Flow to automatically add `birthday-06-07` alongside `dob:1992-06-07`)
* **Replace the tag format** — re-tag customers using the `birthday-MM-DD` format instead

**How to set up birthday tags:**

Customer birthday tags need to be added to your customers in Shopify. Common approaches:

* Collect birthdays via a form on your storefront and tag customers automatically using Shopify Flow
* Import birthday tags via CSV
* Use a third-party app that collects and tags customer birthdays

You can use the **Test Query** button next to the field to verify how many customers currently match your query. The campaign supports up to 250 matching customers per run.

Need help writing a query? Contact us at <support@code57.pl> or read our [Customer Query documentation](https://docs.giftcardfactory.app/misc/customers-query-selector).

#### Gift Card Value

The fixed monetary value of the birthday gift card (e.g., `10.00` for a $10 gift card). Every customer receives the same value.

#### Gift Card Message

An optional customer-visible message attached to the gift card (max 200 characters). For example: "Happy Birthday! Here's a gift from us."

#### Gift Card Expiry

Control when the birthday gift card expires:

* **Never expire** — The gift card has no expiration date
* **Expire relative to creation date** — The gift card expires after a set period (e.g., 30 days, 6 months, 1 year after creation)
* **Expire on a specific date** — The gift card expires on a fixed calendar date

#### Schedule

Configure when and how often the campaign runs:

* **Start date** — The first date the campaign should run
* **Start time** — Hour and minute (in 15-minute increments)
* **Timezone** — The timezone used for scheduling
* **Repeat** — Optional recurrence:
  * **Non-recurring** — Runs once at the specified date/time
  * **Recurring** — Runs repeatedly at a set interval (e.g., every 1 day, every 1 week, every 1 month)

For birthday campaigns, a **daily recurring schedule** is the most common setup — it ensures every customer gets their gift card on their actual birthday.

#### Delivery

Choose how the gift card is delivered:

* **Shopify Email** — Uses Shopify's built-in gift card notification (default, no setup required)
* **App Email** — Sends a custom-designed email using your configured email template. Allows full control over branding and design.
* **Shopify Flow** — Triggers a Shopify Flow event with gift card data. Build your own delivery logic in Flow.
* **Klaviyo** — Triggers a Klaviyo event for use in Klaviyo flows

When using App Email, select an email template. Available template types:

* **Birthday Gift Cards** — Pre-built template designed for birthday campaigns
* **Custom** — Any custom template you've created

**Template Variables**

The following variables are available in your email template:

* `gift_card.code` — Full gift card code
* `gift_card.initial_value.amount` — Gift card value
* `gift_card.balance.amount` — Current balance (same as initial value at creation)
* `gift_card.expires_on` — Expiry date (if set)
* `customer.first_name` — Customer's first name
* `customer.last_name` — Customer's last name
* `customer.email` — Customer's email
* `shop.name` — Your store name
* `shop.url` — Your store URL

### Campaign Dashboard

After creating a campaign, access its dashboard from the campaigns list. The dashboard shows:

#### Metrics

* **Gift cards sent** — Total birthday gift cards delivered
* **Value issued** — Combined monetary value of all sent gift cards
* **Gift cards redeemed** — Number of birthday gift cards that were subsequently used
* **Redeemed value** — Monetary value of redeemed gift cards
* **Order total** — Total order value from orders where birthday gift cards were used

Each metric includes a line chart showing trends over a selectable time range (7 days, 30 days, 90 days, 1 year, or year-to-date).

#### Campaign Runs

A table showing each time the campaign ran, including:

* Run number and date
* Status (In Progress, Finished, Error, Limits Error)
* Number of gift cards sent
* Number of skipped customers

#### Settings

The campaign configuration can be edited directly from the dashboard using the settings panel.

#### Activate / Deactivate

Toggle the campaign on or off. When deactivated, the campaign will not run on its next scheduled time. When reactivated, the next run is recalculated based on the schedule.

### Tips

* **Run daily** — For the best customer experience, run the campaign daily so every customer gets their gift card on their actual birthday
* **Test your query first** — Always use the "Test Query" button to verify your customer query returns the expected results before activating
* **Set a reasonable expiry** — A 30-90 day expiry creates urgency while giving customers enough time to shop
* **Personalize the message** — A warm birthday message makes the gift card feel personal, not automated
* **Monitor your dashboard** — Track the redeemed rate to understand how effective your birthday campaign is at driving repeat purchases

***

### Troubleshooting

#### "Found 0 customers matching the query"

**Possible causes:**

* Customers aren't tagged with birthdays
* Tag format doesn't match query format
* Liquid syntax error in query
* No customers have birthdays today (for daily campaigns)

**Solutions:**

* Verify customers have birthday tags: `tag:birthday-*`
* Check tag format matches: `birthday-MM-DD` with leading zeros (e.g., `birthday-03-05` for March 5th)
* Test query with a fixed date first: `tag:birthday-06-15`
* Check a few customer records manually in Shopify Admin

#### "Found more than 250 customers"

**Possible causes:**

* Query is too broad
* Using wildcard incorrectly
* Missing date filters

**Solutions:**

* Add more specific filters: `AND email_marketing_consent:subscribed`
* Check your Liquid syntax — make sure the date format is correct
* Verify the query when tested versus when running
* Segment customers across multiple campaigns

***

### Need More Help?

* [Customer Query Selector Guide](https://docs.giftcardfactory.app/misc/customers-query-selector) — Detailed query creation
* [Email Template Guide](https://docs.giftcardfactory.app) — Customize email design
* [Klaviyo Integration](https://docs.giftcardfactory.app) — Set up Klaviyo
* [Shopify Flow Integration](https://docs.giftcardfactory.app) — Set up Flow
* Contact support: <support@code57.pl>
