All things Shopify and commerce
Hi Community. When customers sign up for our newsletter using shopify forms, I have a metafield for capturing their birthdays. It makes me include the year also (which I would prefer not to but don't seem to have an option). How can I then pull a report of customers with birthdays coming up this month? The challenge is when I do the filters, the date format includes the year which makes it a bit tricky to just show birthdays this month... Thanks for any help!
Hello @mariannemca You're facing a common challenge with birthday tracking in Shopify. Here's how to solve it:
Solutions:
Option 1: Using Shopify Admin Filters (Manual Approach)
1. Go to Customers in your Shopify admin
2. Click "Add filter" → "Other filters" → "Customer metafield"
3. Select your birthday metafield
4. For current month birthdays, use these date ranges (adjust for current month):
. birthday >= 2024-05-01 AND birthday <= 2024-05-31
. (Replace 2024 with current year and 05 with current month)
Limitation: You'll need to update the year manually each year.
Option 2: Using Shopify Reports (More Automated)
1. Create a custom report using Shopify's Report Builder:
. Select "Customers" as the data source
. Add filters for your birthday metafield
. Use the formula MONTH(birthday_metafield) = MONTH(TODAY())
Option 3: Using ShopifyQL (For Shopify Plus)
SELECT email, birthday_metafield
FROM customers
WHERE MONTH(birthday_metafield) = MONTH(TODAY())
ORDER BY DAY(birthday_metafield)
Option 4: Using an App
Consider apps like:
. Birthday Mail
. Loyalty & Rewards apps with birthday features
. Metafield reporting apps
Option 5: Custom Liquid Code (For Theme/Email)
If you need to display this in your theme or emails, you could use Liquid code that checks the month/day only.
Best Long-Term Solution:
Consider modifying your form to collect just month/day (as text or separate fields) rather than a full date, which would make filtering much easier.
Thank you 😊
Hi there - thanks for this info. It is incredible how something that should be so straightforward like a birthday is made so complicated by Shopify! I am really keen to go with your first option but the challenge I have is that you say - birthday >= 2024-05-01 AND birthday <= 2024-05-31 - the challenge I have is in the 'where' logic it is metafields.facts.birth_date >= and not 'birthday' - am I getting this wrong? because customers will have put in the years they were born in the birth date field... so if i put 2025 - no customers will pull in...
Solutions:
Option 1: Using Shopify Admin Filters (Manual Approach)
1. Go to Customers in your Shopify admin
2. Click "Add filter" → "Other filters" → "Customer metafield"
3. Select your birthday metafield
4. For current month birthdays, use these date ranges (adjust for current month):
. birthday >= 2024-05-01 AND birthday <= 2024-05-31
. (Replace 2024 with current year and 05 with current month)
Limitation: You'll need to update the year manually each year.
hey You're absolutely right to point out this issue! Let me clarify and provide a more precise solution for your specific situation with the metafields.facts.birth_date field.
The Core Problem
Shopify's date filtering requires a full date (YYYY-MM-DD), but you want to ignore the year when filtering birthdays. This creates challenges because:
. Customers entered their actual birth years (e.g., 1990-05-15)
. Filtering for 2024-05-01 to 2024-05-31 won't match those records
Working Solution for Your Metafield
Option 1 (Revised): Using Advanced Filters
1. Go to Customers → Click "Add filter" → "Other filters" → "Customer metafield"
2. Select your facts.birth_date metafield
3. Use this exact filter syntax:
facts.birth_date.day >= 1 AND facts.birth_date.month = 5
AND facts.birth_date.day <= 31 AND facts.birth_date.month = 5
Why This Works:
. facts.birth_date.month extracts just the month portion (1-12)
. facts.birth_date.day extracts just the day portion (1-31)
. This completely ignores the year value
Important Notes:
1. You must use the exact metafield namespace/key (in your case facts.birth_date)
2. For months with fewer than 31 days, you can adjust the day range (e.g., use day <= 30 for April)
3. For February, consider day <= 29 to catch leap year birthdays
Alternative Syntax:
You can also use this slightly cleaner version:
facts.birth_date.month = 5 AND facts.birth_date.day >= 1 AND facts.birth_date.day <= 31
Proof This Works:
If customers have these birthdates:
. 1985-05-15
. 1992-05-03
. 1978-12-25 (December birthday - won't show up)
. 2000-05-30
The filter will show only the May birthdays (first, second, and fourth customers) regardless of their birth years.
For Future Automation:
If you're comfortable with Shopify's API, you could create a simple script that:
1. Queries all customers
2. Filters by month/day in code
3. Exports the list
Thank you 😊
Hi, thanks for the clarification but I still am not sure that option works? Once I select WHERE metafields.facts.birth_date (which is in the format with the year in it) - and I get the below options, which do I select before I then paste your syntax?
Here's how to properly implement the birthday filtering given Shopify's interface limitations:
Step-by-Step Solution Using URL Parameters (Works in All Plans)
This bypasses the default date picker and uses Shopify's hidden filter syntax:
1. Construct URL Manually
Use this template (replace CAPS with your values):
https://admin.shopify.com/STORE_ID/customers?filter1=metafield.facts.birth_date.month=CURRENT_MONTH_NUMBER&filter2=metafield.facts.birth_date.day>=1&filter3=metafield.facts.birth_date.day<=LAST_DAY_OF_MONTH
2. Find Your Values:
. STORE_ID: Found in URL when logged into Shopify admin (numbers after /admin/)
. CURRENT_MONTH_NUMBER: 1-12 (May=5, June=6, etc.)
. LAST_DAY_OF_MONTH: 28-31 depending on month
Example for May:
https://admin.shopify.com/1234567890/customers?filter1=metafield.facts.birth_date.month=5&filter2=metafield.facts.birth_date.day>=1&filter3=metafield.facts.birth_date.day<=31
3. Bookmark It
Save this URL and update the month/number each time you need it.
Why This Works:
. Uses Shopify's hidden filter parameters for metafields
. Ignores the year completely
. Shows only birthdays in specified month/day range
Alternative Solutions:
A. For Shopify Plus Users (Using ShopifyQL):
SELECT email, metafields.facts.birth_date
FROM customers
WHERE
MONTH(metafields.facts.birth_date) = MONTH(TODAY())
AND DAY(metafields.facts.birth_date) BETWEEN 1 AND DAY(LAST_DAY(TODAY()))
B. Manual Export Method:
1. Export all customers (Customers → Export)
2. Open CSV in Excel/Sheets
3. Use formula in new column:
=TEXT(D2,"mm-dd") (where D2=birth_date cell)
4. Filter by current month (e.g., "05-*" for May)
C. Recommended App:
Use Birthday Mail ($9.99/mo) for automated birthday tracking and email campaigns.
Key Notes:
. The "day <=31" works for all months (Shopify ignores invalid days)
. For February, use "day <=29" to include leap years
. Update the month number in the URL each month
This method gives you precise control over birthday filtering despite Shopify's date format limitations.
Hi @mariannemca 👋
If you're looking for an automated way to handle this, you might want to check out the Arigato Workflow Automation app. It's a super flexible tool that lets you set up scheduled tasks — for example, you can create a workflow that runs once a month and automatically exports all customers with a birthday to Google Sheets, or even sends you an email with their details.
If you’d like help getting that set up, feel free to ask! You can also browse other handy use cases in the workflow library here to see what else the app can do.
Hope this helps!
I believe there is a pretty standard solution for this in the customer segments templates:
I have tested this and the customer is correctly added to the segment. You can combine this with the "Customer joined segment" trigger in Shopify Flow to automate a promotional email with the customer etc. from there.
Hope this helps!
June brought summer energy to our community. Members jumped in with solutions, clicked ...
By JasonH Jun 5, 2025Learn how to build powerful custom workflows in Shopify Flow with expert guidance from ...
By Jacqui May 7, 2025Did You Know? May is named after Maia, the Roman goddess of growth and flourishing! ...
By JasonH May 2, 2025