Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

Flow Designer record trigger (Created or Updated) causes duplicate email on insert - best practice?

鳴鏑張
Tera Contributor

Hi everyone,

I’m building a notification flow on table “x_xxxxxxxxx”.

Goal:
- Send 1 email to multiple recipients when status becomes “xxxx” (re-review pending)
- Cover both create and update scenarios

Current implementation:
- Record trigger: “Created or Updated”
- Recipient list is built with Flow Variables (collect IDs in loop, convert to email list outside loop)
- Send Email step is outside the loop (single send)

Issue:
When a new knowledge record is inserted, the flow seems to run twice (create + immediate update), so duplicate email can be sent.

Questions:
1. Is this expected behavior for “Created or Updated” triggers?
2. Is it better practice to split into two flows?
- Flow A: Created + status = “xxxx”
- Flow B: Updated + status changes to “xxxx”
3. If keeping one flow, what is the recommended guard condition to avoid duplicates?

I’d appreciate any recommended pattern from production experience.
Thanks in advance.

4 REPLIES 4

Siddhesh Jadhav
Kilo Sage

Hi @鳴鏑張 ,

Please take a look at the Run Trigger options in Flow Designer, specifically:

  1. Once

  2. For each unique change

If configured correctly, the flow should not run twice.

Otherwise, you may consider splitting the logic into two separate flows one for Create and one for Update to have better control and avoid duplicate execution.

 

Please let me know if you have any further queries.

 

Thanks & Regards,
Siddhesh Jadhav

If this answer helped resolve your query, please accept it and mark it as helpful.

Ankur Bawiskar
Tera Patron

@鳴鏑張 

after insert is record getting updated immediately?

If yes then flow will trigger again and send email

My recommendation

1) split the flow and make it 2

  • Flow A: Created -> Trigger: Created -> Condition: Status is xxxx (or changes to)
  • Flow B: Updated -> Trigger: Updated -> Condition: Status changes to xxxx

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

@鳴鏑張 

Hope you are doing good.

Did my reply answer your question?

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

its_SumitNow
Mega Sage

Hi @鳴鏑張 

this is a common issue in Flow Designer. 

Why this happens ?

Yes, this is expected behavior. When a record is inserted, ServiceNow often fires a subsequent system update (e.g., to populate derived fields, assignment rules, or business rules), which triggers the "Updated" condition as well. So your single "Created or Updated" trigger fires twice on insert.

Recommended approach: Split into two flows

This is the cleanest, most maintainable pattern in production:

  • Flow A (Created): Trigger = Created → Condition: Status = "xxxx"
  • Flow B (Updated): Trigger = Updated → Condition: Status changes to "xxxx"

The key difference in Flow B is using "changes to" rather than "is" — this ensures the email only fires when the status transition actually happens, not on every unrelated update.

If you prefer to keep one flow

Use the "Run Trigger" setting and set it to "Once for each unique change" instead of "Always." Additionally, add a condition checking that the previous value of status was not "xxxx" — this acts as a guard against re-triggering on unrelated updates.

Hope it helps 🙂 

 

Regards

Sumit