What is your goal?
We are building a low-volume, 30-day voucher MVP with this architecture:
Shopify Forms → Shopify Flow → Google Sheets → Make → transactional voucher email
Shopify Flow will add one row to Google Sheets for each form submission.
Make should then:
Detect the new row.
Use the Shopify metaobject ID to create a customer-facing voucher reference, for example:
gid://shopify/Metaobject/1234567890123 → WH-1234567890123
Calculate an expiry date equal to the submission date plus 7 days, using the Europe/Rome timezone.
Send a strictly transactional voucher email to the submitted email address, even when marketing consent is false.
Update the same Google Sheets row with:
voucher_code
expires_at
voucher_status = issued
email_sent = yes
email_sent_at
Marketing consent is optional and completely separate from delivery of the requested voucher.
What is the problem & what have you tried?
We have not built the Make scenario yet. We want to confirm the safest architecture before implementing it.
Our proposed scenario is:
Google Sheets — Watch New Rows
Filter rows with a valid metaobject_id and email
Check whether the voucher has already been processed
Generate the voucher code from the numeric part of the Shopify metaobject ID
Add 7 days to submitted_at
Send the transactional email
Update the original Google Sheets row
Our main concern is preventing duplicate voucher emails during retries, incomplete executions or scenario reprocessing.
What is the recommended idempotency pattern in Make for this case?
Is checking email_sent = no and using sequential processing sufficient?
Should we use a Make Data Store with metaobject_id as the unique key?
How should we handle a failure occurring after the email is sent but before the Google Sheets row is updated?
Which Make functions would you recommend for extracting the numeric ID and calculating the 7-day expiry correctly?
Error messages or input/output bundles
No error yet — this is an architecture review before implementation.
Sanitized example input:
{
“metaobject_id”: “gid://shopify/Metaobject/1234567890123”,
“submitted_at”: “2026-08-12T10:15:00+02:00”,
“email”: “[email protected]”,
“marketing_consent”: false
}
Expected output:
{
“voucher_code”: “WH-1234567890123”,
“expires_at”: “2026-08-19”,
“voucher_status”: “issued”,
“email_sent”: “yes”
}