Mastering Timestamps in Shopify Flow: Get Accurate Form Submission Times
Ever found yourself scratching your head, trying to get a precise date and time for a form submission into an internal notification email from Shopify Flow? You’re not alone! This is a surprisingly common hurdle, and it was the hot topic in a recent community discussion. Let's dive into the problem and the clever workaround our community experts cooked up.
The Mystery of the Missing Time: Why formSubmittedAt Shows 00:00
It all started with Thomas (hello_3340) wanting to include the exact submission time (date + hh:mm) in emails sent via Shopify Flow, triggered by Shopify Forms. He knew about the metaobject.formSubmittedAt variable, but it seemed to only give the date, not the time.
Our resident expert, Moeed, initially suggested using the Liquid date filter to format the existing formSubmittedAt variable, like this:
{{ metaobject.formSubmittedAt | date: "%Y-%m-%d %H:%M" }}
This snippet should output something like 2026-05-14 14:32. However, Thomas quickly reported back that while the date was correct, the time stubbornly remained 00:00.
This is where Moeed dropped a crucial piece of insight: "Ah, that’s a trick of how Shopify Forms exposes the metaobject field, formSubmittedAt is sometimes stored as a date-only field rather than a full datetime, which is why the time portion always shows 00:00 regardless of the format string."
It turns out that `formSubmittedAt`, despite sounding like it should contain a full timestamp, sometimes arrives in Flow as a date-only field. Annoying, right? But fear not, the community found a solid workaround!
The Savvy Workaround: Leveraging "now" in Shopify Flow
Since the `formSubmittedAt` variable can be a bit unreliable for capturing the time component, Moeed proposed a brilliant alternative: use the current run time of the Flow itself. Shopify Flow triggers almost instantly after a form submission, so the Flow's execution time is practically identical to the submission time.
The solution is simple and elegant:
{{ "now" | date: "%Y-%m-%d %H:%M" }}
This little Liquid snippet, when placed in your email template within Shopify Flow, grabs the exact date and time when the Flow is executed, giving you that real-time component you're looking for. Thomas confirmed that this solved his primary issue!
Tackling Timezones: CET, CEST, and the DST Dance
Getting the time was one thing, but what about displaying it in a specific timezone, like CET/CEST? This is where things get a little trickier, as Flow doesn't have a native timezone filter.
Moeed explained that you have to manually offset the time. Since CET is UTC+1 and CEST (Central European Summer Time) is UTC+2, you'd use a `date_plus` filter. For CEST, for example, you'd add two hours:
{{ "now" | date_plus: "2 hours" | date: "%Y-%m-%d %H:%M" }}
The catch? Daylight Saving Time (DST). You'd need to adjust this to "1 hour" during winter time. There's no clean, automatic way to handle DST switching directly within Flow's Liquid templates.
Your pragmatic options here are:
- Pick an offset and accept the hour error for half the year: For many internal notifications, having it off by an hour for part of the year might be acceptable, especially if you note that it's, say, CEST.
- Manually adjust the Flow twice a year: If precision is paramount, you could simply go into your Flow and change
"2 hours"to"1 hour"(and vice-versa) when DST shifts. Thomas found this acceptable for his needs. - Build a conditional check (advanced): While possible with more complex Liquid logic, it can get cumbersome for a simple timestamp. For most store owners, the manual adjustment or accepting a slight variance is the more practical route.
Step-by-Step: Implementing the Accurate Timestamp in Shopify Flow
Ready to get this working in your store? Here’s how you can implement this solution in your Shopify Flow:
1. Access Your Shopify Flow
Navigate to your Shopify admin, go to Apps, and open Shopify Flow. Find the Flow you’ve set up for your form submissions (e.g., one that uses the "Form submitted" trigger).
2. Locate the "Send internal email" Action
Within your Flow, find the action where you send an internal email. Click to edit the email content.
3. Insert the Timestamp Code
In the email body, wherever you want the submission timestamp to appear, paste the following Liquid code:
Submission Time: {{ "now" | date: "%Y-%m-%d %H:%M" }}
You can adjust the format string ("%Y-%m-%d %H:%M") to your preference. For example, "%B %d, %Y at %H:%M" would give you something like May 14, 2026 at 14:32.
4. (Optional) Adjust for Timezone Offset
If you need to display the time in a specific timezone like CET/CEST, add the date_plus filter. Remember to adjust the hours based on your target timezone and current DST status:
Submission Time (CET/CEST): {{ "now" | date_plus: "2 hours" | date: "%Y-%m-%d %H:%M" }}
Change "2 hours" to "1 hour" during non-DST periods for CET.
5. Test Your Flow
Save your Flow and then test it by submitting your Shopify Form. Check your internal email to ensure the timestamp is displaying correctly with the date and time you expect.
It's always great to see the community come together to solve these little quirks that can pop up when you're building out robust automations. While formSubmittedAt might sometimes play hard to get with its time component, the "now" workaround in Shopify Flow is a reliable way to ensure your internal notifications are as precise as possible. A huge shout-out to Moeed and Thomas for sharing their insights and finding a solution that helps us all keep our automations running smoothly and accurately!