A merchant is struggling to configure Shopify Flow to send different emails based on which form customers submit, while supporting double opt-in and allowing customers to fill out both forms at different times.
The Setup:
Form A (inline): Collects name/email for waitlist, adds tag “A”
Form B (pop-up): Collects name/email for PDF access, adds tag “B”
Both forms use double opt-in
Customers should receive appropriate emails regardless of which form they complete first or the time gap between submissions
Key Challenges Identified:
“Customer tags added” trigger fires immediately, before double opt-in confirmation completes, causing “customer has not agreed to email marketing” errors
“New customer subscribed” trigger only fires once (for whichever form is submitted first)
Need to handle scenarios where customers fill out both forms hours or days apart
Proposed Solutions:
Use “Metaobject entry created” trigger (specific to each Shopify Form) with separate workflows for each form
Create customer segments based on email subscription status AND tags, then use “Customer segment joined” trigger
Add delay or check conditions to account for double opt-in timing
The discussion includes troubleshooting steps with screenshots showing workflow errors. The final suggestion involves using segments that check both subscription status and tags to avoid the double opt-in timing issue.
Summarized with AI on November 1.
AI used: claude-sonnet-4-5-20250929.
Hey, I have this setup of Shopify Forms and Flows and resulting problem.
Form A: Request for Name, Mail. Inline Form. Gives Tag customer Tag “A”. Double opt-in activated.
Form B: Request for Name, Mail, Pop-up Form. Gives Tag customer Tag “B”. Double opt-in activated.
Now I want a flow to sent out a certain mail to customers which have been added with tag “A” and another mail to customers which have been added with tag “B”.
This works out, if I have the “if this tag, do that” setup done in flow.
But now comes my problem. Customers need to have the possibitly to sign in to both forms. Form A is a waitlist spot, Form B gives access to a PDF.
You should have the possibility to either 1. Sign in on the waitlist trough the inline form and later see the teaser of Form B and fill this out as well, then receive the access to the pdf, or 2. Secure the access to the pdf first via the pop-up form and later sign in into inline form to get the waitlist spot.
How do I built a fitting flow for that? Any ideas? I think this case is not that problematic. If just every form had an indiviual e-mail template assigned to it it would not even need a flow…
Okay, but what is the trigger then? Because if customer fills out first Form A and Form B a day later, the workflow does not run as just a tag is added and not a new customer created.
Got it, customer segment is a good trigger.
A customer joins segment “AB” when the tag from form A and from form B is collected.
But how can I control, that the customer who first joined form A and got its mail, does then after joining form B getting its mail (or opposite). Is there a check condition “received mail A”?
A customer can join segment “AB” when first triggering A or first triggering B, he then already got one mail…
In short, I need an easy solution for:
Customer fills out Form A, gets Mail A
Customer fills out Form B, gets Mail B
Needs to be possible to get both mails, even if between filling in Form A and Form B is time, as f.e. 30 mins, 3h, 1 day or so.
Can not be that complicated I suppose.
If you want both to trigger an email, you probably need two 2 segments. Or to use Customer tags added, where you can check the new tags and existing tags in Flow
Thank you for your fast feedback Paul!
But if a customer is created after a first form fill out, the trigger customer tags added would not check f.e. 6h later, if he also filled out the other form and got another tag, right? It can happen, that customer get Tag A after filling out Form A and then a few hours or days later Tag B after filling out Form B. Would the flow trigger then?
I’m not fully following your logic, as the possibility that one of these might not be a customer wasn’t mentioned and I’m not sure you would get any of these triggers if they aren’t a customer. If they are a customer before the second form (and it’s tags), then “Customer tags added” would fire once. You could check the tags added and the existing tags and handle the logic in Flow. If they might not be a customer after 2 forms submissions, you would have to trigger something off the form submission itself. Or you could run a query to “Get customer data” based on tags that have been added when they become a customer.
Nobody of the people entering the form is a customer, but after entering it, it is displayed as “customer” in my dashboard with 0 order or am I wrong? The “new customer added” or"customer tags added" or “customer subscribed to email marketing” trigger works, if the form is submitted even if the “customer” has not spend a dollar. That is the current situation.
I suggest testing this by building the workflow and seeing what happens in the various scenarios. Most likely Customer tags added fires in both cases. And same with segment joined.
The “customer tags added” trigger does not work with double opt in. Customer is created with the right tags, but the e-mail confirmation is not immediatly… The flow starts immediatly though. Therefore it runs into the error “customer has not agreed to e-mail marketing”.
It sounds like you are trying to create one flow that will send both email notifications? I would suggest setting up two separate workflows in the Flow app, one for each form.
Then the customer will receive the correct email regardless of whether they’ve also filled out the other form or not.
I get your idea, it is quite obvious yet what should the trigger then be? “New customer subscribed to e-mal marketing” will only trigger one of these flows, whichever form is submitted first.
If you are using Shopify Forms for the signup form, then the trigger will be “Metaobject entry created” and you will select the metaobject definition that matches your signup form. That way, the flow will run every time someone submits that form.
Hey,
Thanks, I tried this setup because I never heard about that trigger. Yet, I get this error. I selected the right metaobject for the needed form, yet there is no email arriving when testing.
Yeah, that “metaobject.formSubmittedBy.id” is what I was asking about. It’s possible the form didn’t have a customer tied to it (if the form is public facing).
Put a log output action right before the set and put that variable in it. That will allow you see what Flow sees. We just launched improvements to the workflow run log so you may be able to see this already (without that action).
If it’s showing a customer GID, then the issue is something else.