# Best Practice to modularize Workflows

**URL:** <https://community.n8n.io/t/best-practice-to-modularize-workflows/501>\
**Category:** Questions\
**Created:** [December 10, 2019, 9:34am UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501 "2019-12-10T09:34:47Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Libermentix](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/libermentix/32/99_2.png) [@Libermentix](https://community.n8n.io/u/Libermentix)\
**Post date:** [December 10, 2019, 9:34am UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/1 "2019-12-10T09:34:47Z")

</div>

Hey all,

I’m curious how others do it. I sometimes catch myself and want to do a whole lot with one workflow/process. So I was wondering in order to slim things down a bit (and have workflows focus on one thing in particular), how would you do modulirization? Right now the only thing that would come to my mind is a webhook trigger and an HTTP Post from the origin workflow, is there a better way?

---

<div class="post-metadata">

**Author:** ![jan](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/jan/32/9_2.png) [@jan](https://community.n8n.io/u/jan)\
**Post date:** [December 11, 2019, 3:34pm UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/2 "2019-12-11T15:34:13Z")

</div>

Yes, there is currently sadly no better way. I have planed now for a while to make it possible to call one workflow from another one but did not get to it yet. Hopefully will find time for it soon as I should now have again more time than the last month.

Btw. got also requested here:

> [@Feature: workflow to workflow \[GOT CREATED\]](http://community.n8n.io/t/feature-workflow-to-workflow/183):
>
> Can I create a node that trigger another workflow? For example: Workflow A → Workflow B → Workflow C

---

<div class="post-metadata">

**Author:** ![Libermentix](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/libermentix/32/99_2.png) [@Libermentix](https://community.n8n.io/u/Libermentix)\
**Post date:** [December 12, 2019, 11:00am UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/3 "2019-12-12T11:00:27Z")

</div>

So the way I handle it is to define a Webhook Trigger and use that as a module interface. I just don’t know whether when scaled this would have any negative side-effects.

In essence I’m doing a whole HTTP roundtrip which could as well be a process ping, but then again, this makes things very transparent and one can use the existing infrastructure

---

<div class="post-metadata">

**Author:** ![jan](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/jan/32/9_2.png) [@jan](https://community.n8n.io/u/jan)\
**Post date:** [December 12, 2019, 2:10pm UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/4 "2019-12-12T14:10:34Z")

</div>

Yes, that is definitely not the best and most efficient way of doing it. But that is sadly to expect as it is a workaround.

As you can simply call the webhooks as “localhost” the time lost there should be very minimal. The biggest hit will be that it starts a new process, so you will for sure lose almost a second there. But again is only a workaround and I want to look into a proper implementation very soon.

---

<div class="post-metadata">

**Author:** ![Libermentix](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/libermentix/32/99_2.png) [@Libermentix](https://community.n8n.io/u/Libermentix)\
**Post date:** [December 12, 2019, 3:21pm UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/5 "2019-12-12T15:21:02Z")

</div>

okay. It works fine for us, so it’s okay for now. Nothing time-critical, I’m just curious if that approach at some point bloats the server.

Cheers

---

<div class="post-metadata">

**Author:** ![jan](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/jan/32/9_2.png) [@jan](https://community.n8n.io/u/jan)\
**Post date:** [December 22, 2019, 2:35am UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/6 "2019-12-22T02:35:21Z")

</div>

An “Execute Workflow” Node got created and released with n8n@0.40.0

The input data of the ndoe will be at the same time the output of the Start-Node in the called workflow. The output data of the last node of the executed workflow will be the same as the output of the “Execute Workflow” Node.

---

<div class="post-metadata">

**Author:** ![Gabriel\_Fermy](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/gabriel_fermy/32/121898_2.png) [@Gabriel\_Fermy](https://community.n8n.io/u/Gabriel_Fermy)\
**Post date:** [September 21, 2025, 1:12am UTC](https://community.n8n.io/t/best-practice-to-modularize-workflows/501/7 "2025-09-21T01:12:51Z")

</div>

The only pain pont is just to prepare the initial data format. Although n8n already prepared a very good form to define data structure and mock data, but it migjt be a time saver if we could point workflow node to use as reference.
