# Scheduled Gift Cards

Scheduled Gift Cards sends a gift card to matching customers on a recurring schedule. The campaign resolves recipients (via a customer query, segment, or explicit list) each time it runs, then creates and delivers a personalized gift card to each one. Useful for birthdays, anniversaries, loyalty rewards, or any other recurring occasion.

**Each scheduled 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 > Scheduled 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 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 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 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:

* **Scheduled Gift Cards** — Pre-built template designed for scheduled gift card 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 gift cards delivered
* **Value issued** — Combined monetary value of all sent gift cards
* **Gift cards redeemed** — Number of gift cards that were subsequently used
* **Redeemed value** — Monetary value of redeemed gift cards
* **Order total** — Total order value from orders where these 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 message makes the gift card feel personal, not automated
* **Monitor your dashboard** — Track the redeemed rate to understand how effective your 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.giftcardfactory.app/campaigns/scheduled-gift-cards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
