# Duplicate/copy "Trigger webhook" with multiple parameters

**URL:** <https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085>\
**Category:** Ask for Help\
**Created:** [February 3, 2022, 8:50pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085 "2022-02-03T20:50:50Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 3, 2022, 8:50pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/1 "2022-02-03T20:50:50Z")

</div>

Hi all,  
Following the good advice from @Darren_Murphy , I’m always using custom actions. The problem is that the action/flow builder seems to be heavily under-developed. One feature that is frustratingly missing is the ability to copy/paste between custom flows.  
In particular, would be great to copy action with many variables, such as set values in a large table/sheet. But, as the title suggests, I’m actually asking for help with the “Trigger webhook” action. Many of my webhook are loaded with many parameters. Setting them up every time seems like a hassle, not the mention a huge window for mistakes (by me 😛 ).  
I’ve been looking around for an easy way to manage these parameter-heavy actions. In [this post](https://community.glideapps.com/t/how-many-parameters-can-be-attached-to-a-webhook/22511/5), I found this after-the-fact comment from (again) @Darren_Murphy

> using a template column to concatenate multiple parameters, and then unwind them at the other end.

Has anyone played with this option?  
In addition to calling them from Glide, I’m also calling Integromat webhooks from within other scenarios in Integromat. This means I must keep the incoming parameters very organized. I noticed that Glide is sending the parameters under “params”, as below:  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/9/095d83b8a6de79849d6e506dd08ba709e80be62d.png)

To make sure I’m always sending the correct structure for the webhook parameters, I’m sending it as a raw JSON when triggered from another scenario.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/8/9/89b5b0d916b804fb47849526154222b4dda015bc.png)

After this long (and boring?) explanation, assuming you have read the entire thing, any ideas how to tackle this?  
I’d love to implement the elegant solution of a template column and sending just that template as a parameter to the webhook. I’m not sure how to unwind it inside Integromat. I assume it’s by using the replace module, but how do we split it back into multiple (many) parameters that we can later use in other modules on the same flow?  
BTW - once I figure out how to send a single parameters from Glide, I’ll want to do the same for HTTP requests from other scenarios from Integromat. This means, again, the receiving scenario should be able to “unpack” this “all-in-one” parameters regardless of where they came from.  
Thanks

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [February 3, 2022, 11:47pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/2 "2022-02-03T23:47:27Z")

</div>

> [@Test\_Test](#):
>
> I’d love to implement the elegant solution of a template column and sending just that template as a parameter to the webhook. I’m not sure how to unwind it inside Integromat. I assume it’s by using the replace module, but how do we split it back into multiple (many) parameters that we can later use in other modules on the same flow?

You can use something like GET(SPLIT(template;delimiter);1) with 1 being the index of the thing you want to extract. Indexing starts from 1.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/d/6/d601989747178a77b698aad53c1b3b5e03b92514.png)

However it gets ugly if you have a lot of things in that template, to make sure the index is not off.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 4, 2022, 2:26am UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/3 "2022-02-04T02:26:12Z")

</div>

> [@Test\_Test](#):
>
> I found this after-the-fact comment from (again) @Darren_Murphy
> 
> > using a template column to concatenate multiple parameters, and then unwind them at the other end.

That comment was made quite some time ago - almost a year ago.  
That’s not what I’d do now. What I would do now - and in fact what I did just recently - is use JSON. That is:

- Construct a JSON object in Glide using templates and joined lists

 ![json-payload](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/a/7/a7f133f35655583f847da090ace26112744b5c8f.png)

- Send that JSON object through a webhook as a single parameter

 ![json-webhook](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/2/d/2d94b621e36fc4f7642175210071cf6826a13f03.png)

- Use the parse JSON module, plus an iterator (if necessary) on the Integromat side to process it.

 ![Screen Shot 2022-02-04 at 10.24.39 AM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/a/3/a3d0632d06c3aba8ca82615c26cc4f40f083c34d.png)

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [February 4, 2022, 4:18am UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/4 "2022-02-04T04:18:28Z")

</div>

This is a much better way to do it!

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 6:29am UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/5 "2022-02-04T06:29:43Z")

</div>

This indeed looks much more elegant.  
Would you be able (and willing) to share some more explanations about each of these three steps? such as. how you constructed the JSON, how to parse it and what happens after the iterator?  
Thanks!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 4, 2022, 7:33am UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/6 "2022-02-04T07:33:35Z")

</div>

> [@Test\_Test](#):
>
> Would you be able (and willing) to share some more explanations about each of these three steps?

Yes, but every use case is different of course. So what I did may not be directly applicable to your situation. But I can provide some general advice which you might be able to take and adapt.

> [@Test\_Test](#):
>
> such as. how you constructed the JSON

The first thing to do is to define your JSON structure. The best way to do that is to open your favourite text editor and start typing 😉

In my case, I needed to send a bunch of rows of data, so I used a very similar technique that I use for generating a HTML table, or a CSV export.

My JSON structure looked like this:

```auto
{
	"timesheets": [{jl}]
}

```

The `{jl}` part of the above is an arbitrary collection (a Joined List) of rows. The template for each row of data looked like this:

```auto
{
	"key": "{key}",
	"user-code": "{user-code}",
	"user-name": "{user-name}",
	"user-role": "{user-role}",
	"date": "{date}",
	"year": "{year}",
	"hours": "{hours}",
	"project-number": "{project-number}",
	"project-name": "{project-name}",
	"stage": "{stage}",
	"stage-name": "{stage-name}",
	"notes": "{notes}",
	"pretty-date": "{pretty-date}",
	"consultant-id": "{consultant-id}",
	"project-id": "{project-id}",
	"stage-id": "{stage-id}",
	"created-by": "{created-by}"
}

```

So the above went into a template column, and each of the `{xxx}` items was used as a replacement value. And then all the rows get combined via a joined list, with the end result being the screen shot that I shared earlier. And that’s what gets sent via the webhook.

> [@Test\_Test](#):
>
> how to parse it

The Parse JSON module will take just a single value, which is the JSON object that’s sent via the webhook:

 ![json](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/f/2/f2607e45c0861250d30359a931be156000116086.png)

You need to define a Data Structure that will instruct the module how to handle the JSON. The easiest way to do that is to use the Generator. Just copy/paste your JSON structure in, let the generator do its work, and then tweak it afterwards.

 ![generator](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/4/f/4f70eee86af5ee4199cbdae10f04daacd15600ce.jpeg)

> [@Test\_Test](#):
>
> and what happens after the iterator?

That’s really irrelevant here, as it’s specific to my use case. The important thing is that once you have successfully parsed the incoming JSON object, you can then access the data within and use it as you need to in subsequent modules.

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 11:55am UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/7 "2022-02-04T11:55:16Z")

</div>

> [@Darren\_Murphy](#):
>
> The best way to do that is to open your favourite text editor and start typing 😉

Thanks Darren!  
I’m too lazy, and too prone to making typos, so I’ve used t[his online Excel =\> JSON converter](https://products.aspose.app/cells/conversion/excel-to-json).

* * *

Update:  
[This converter](https://beautifytools.com/excel-to-json-converter.php) is actually easier to use and understand.

End update

* * *

[Here’s an example](https://docs.google.com/spreadsheets/d/1Ijzlhx209lRGSfnmUT_C3YOv3iwgWsY_/edit?usp=sharing&ouid=101383102290000061428&rtpof=true&sd=true) of the XLS I used.

Output is as follows:

```auto
[
 {
  "FirstName": 10,
  "LastName": 11,
  "Phone number": 12
 }
]

```

Hope this will help someone out there. I have not been able to figure out how to add the “params” on top, to match the output from Glide.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 4, 2022, 12:19pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/8 "2022-02-04T12:19:36Z")

</div>

> [@Test\_Test](#):
>
> I have not been able to figure out how to add the “params” on top, to match the output from Glide.

If you’re sending it via a webhook from Glide, you don’t need to worry about that. Glide does it for you. Here is what my incoming webhook looks like when it arrives on the Integromat side:

 ![webhook](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/e/b/eb442f36a180236c873e5647a2f2e7364c301f16.png)

If you go back to my earlier screen shot, you can see that I sent a single parameter called `data`:

 ![json-webhook](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/2/d/2d94b621e36fc4f7642175210071cf6826a13f03.png)

So Integromat sees that as params-\>data, where data has a `type` and a `value`. The `value` contains the JSON payload.

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 12:56pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/9 "2022-02-04T12:56:56Z")

</div>

Thanks man, you rock 🤘

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 4:19pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/10 "2022-02-04T16:19:24Z")

</div>

> [@Darren\_Murphy](#):
>
> If you’re sending it via a webhook from Glide, you don’t need to worry about that.

Just realized I didn’t close a full circle here.  
I’m not always sending the webhook from Glide. I sometimes send in from Intergromal to Integromat. I’m not able to send the JSON string as a string inside another JSON. Here’s my setup:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/5/1/51c854e6689ae0f980a10af4bbd74d61b4e6dce3.png)

JSON4WebHook is column name I use in Glide so replicating it here.

Here’s the content of 21. Text:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/d/5/d53b95de66270a0394c9e240f11db033b79e5f23.png)

This string (21. Text) is built exactly the same as the one I’m sending from Glide.  
When I try to run this, I get the following error:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/8/5/856950806368f54a19293fb36a6553ed301a2b19.png)

I suspect this is due to the first character {, inside 21. Text.  
Do I need to escape something? Perhaps have another step before pouring 21. Text into the HTTP request?  
Thanks!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 4, 2022, 4:33pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/11 "2022-02-04T16:33:59Z")

</div>

My guess would be that your problem is here:

 ![Screen Shot 2022-02-05 at 12.30.54 AM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/1/6/16fa2b27fe75b23be1b0e3b8cf1aefddce2ff5dd.png)

- Firstly, I don’t think that escapeHTML is required if it’s already valid JSON
- Secondly, those double-quotes around `21. Text` shouldn’t be necessary.

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 5:27pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/12 "2022-02-04T17:27:28Z")

</div>

Yeah, I thought so to and tried it. If I remove both Integromat is taking it a step too far and already praseing the JSON which is nested inside the JSON

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/4/0/403eb67f5f6b9e3790daf03a6de509df37051fdc.png)

If I am to mimic Glide, I need it to come as a string inside “value”. Like this one that came from Glide:  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/3/a/3ac4c8d430fd8ae9010c6251dbbcf54a274d30fc.png)

---

<div class="post-metadata">

**Author:** ![Mark\_Turrell](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mark_turrell/32/26605_2.png) [@Mark\_Turrell](https://community.glideapps.com/u/Mark_Turrell)\
**Post date:** [February 4, 2022, 7:02pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/13 "2022-02-04T19:02:11Z")

</div>

I think we do this json inside a json @mubeeniftikhar and @wajeeha . We have individual rows in a table, then we make a joined list, and send a json made of jsons. We then use integromat to get this combined single value, then split it, then iterate the results to do our magical things.

---

<div class="post-metadata">

**Author:** ![Test\_Test](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/test_test/32/30930_2.png) [@Test\_Test](https://community.glideapps.com/u/Test_Test)\
**Post date:** [February 4, 2022, 7:41pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/14 "2022-02-04T19:41:28Z")

</div>

Hi Mark  
I’m not sure I fully understand your method. However, I think I’m not trying something very similar. What I do is add a “create JSON” module after the “Compose string” module (21. txt).

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/4/04d9a922e0415d6b22f2f9d64a17392a7b72a6db.png)

I than send the output of this module in the body of the HTTP request.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/5/d/5d7dfcc2b5a28fdae830618f421ac49354f28445.png)

This seems to do the trick but I’d be happy if you could review.  
PS - In my previous posts I forgot to add the “AppID” parameter. I now added it to fully mimic the Glide “trigger webhook” action. I’m using this AppID to filter a data store, based on another great advice from @Darren_Murphy .

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/system/32/53398_2.png) [@system](https://community.glideapps.com/u/system)\
**Post date:** [February 5, 2022, 7:42pm UTC](https://community.glideapps.com/t/duplicate-copy-trigger-webhook-with-multiple-parameters/38085/15 "2022-02-05T19:42:25Z")

</div>

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.
