> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elasticfunnels.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Explodely

> Sell your own products through Explodely: payment links, the seller IPN, webhooks, the callback secret, and attribution

Explodely is a hosted checkout. Your funnel owns the sales pages, and buyers leave them for an Explodely payment link where Explodely takes the payment and runs its own upsell sequence. ElasticFunnels sends the buyer there with their click code attached, then records the order when Explodely reports it back.

## What you need

* An Explodely seller account with at least one product, and one Explodely funnel (the webhook form asks for a funnel)
* Your Explodely seller **username**
* The Explodely **product ID** of each product you sell

Everything in your Explodely account used below sits under **Seller Hub** in the top menu: **Products**, **Settings** and **Integrations**.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-menu.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=53984dd45871462a19faf9c888195b81" alt="Explodely Seller Hub menu with Products, Settings and Integrations" width="2784" height="866" data-path="images/merchants/explodely-menu.png" />

## Step 1: Create the Explodely merchant

1. Go to **Settings** → **Merchants** and click **Create Merchant**
2. Select **Gateway**: Explodely, give the merchant a name, and click **Create & Configure**. The merchant's settings open on **General information**.
3. Enter your Explodely seller username as the **Account ID**
4. In **Callback secret**, enter a random string of 24 to 128 characters (letters, digits, `-` or `_`), or click **Generate a random secret**. Keep a copy: it goes at the end of every URL you paste into Explodely in Step 3.
5. Click **Save**

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-ef-settings.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=1050c3719478097323fdf66627991a2e" alt="An Explodely merchant in ElasticFunnels on General information: Account ID, Callback secret, Generate a random secret, Deduplicate Orders and Save" width="2784" height="1108" data-path="images/merchants/explodely-ef-settings.png" />

Your username is in Explodely under **Account** → **General Section** → **Username**.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-username.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=4062c34a214ff2b894c4a972700a2020" alt="Explodely Account, General Section with the Username field" width="2784" height="1020" data-path="images/merchants/explodely-username.png" />

Explodely does not sign its IPN or its webhooks, so the callback secret is what proves a postback came from your account. It is stored encrypted and shown masked after you save. A postback with a missing or wrong secret is refused with `401`.

New Explodely merchants have **Deduplicate Orders** on, so a retried IPN makes one order.

## Step 2: Map your products

1. In Explodely, open **Seller Hub** → **Products** and note each product's ID in the **Pro. ID** column
2. In ElasticFunnels, go to **Products** → edit the product
3. Under **Merchant Product IDs**, set the **explodely** value to that ID

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-products.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=45f23f0d289e968be337d464fe93dcdc" alt="Explodely Seller Hub Products list with the Pro. ID and Payment Link columns" width="2784" height="748" data-path="images/merchants/explodely-products.png" />

Without a mapping, the ElasticFunnels product code is sent as the product ID, which Explodely will only recognise if the two happen to match.

## Step 3: Set up postbacks in Explodely

In **Settings** → **Merchants**, click **Postback Setup** on the Explodely merchant's row. The row shows **Needs Setup** until the first postback arrives (Step 4).

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-ef-list.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=a6ae3422742e157701cfb9fe991dcde7" alt="The Merchants list in ElasticFunnels: an Explodely merchant with its Account ID, the Needs Setup status and the Postback Setup link" width="2680" height="818" data-path="images/merchants/explodely-ef-list.png" />

Postback Setup lists its steps on the left: **Postback URL**, **Seller IPN**, **Webhooks** and **Test**. Use **Next** to move through them. Every URL has its own **Copy** button and looks like this:

```
https://app.elasticfunnels.io/postback/vendor/<postback code>/explodely/YOUR_CALLBACK_SECRET
```

Replace `YOUR_CALLBACK_SECRET` with the secret you saved in Step 1, in every URL.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/TheZiP6_enj2X67g/images/merchants/explodely-ef-setup-url.png?fit=max&auto=format&n=TheZiP6_enj2X67g&q=85&s=7952468d62d9c56766ccfe1ae2d2eacc" alt="The Postback Setup dialog for Explodely on its first step: the steps list, the postback URL with Copy, and the callback secret note" width="2784" height="1394" data-path="images/merchants/explodely-ef-setup-url.png" />

<video autoPlay muted loop playsInline controls src="https://mintcdn.com/elasticfunnels-8a91cd9d/TheZiP6_enj2X67g/images/merchants/explodely-postback-setup-steps.mp4?fit=max&auto=format&n=TheZiP6_enj2X67g&q=85&s=3cda65ebcdb45daa89eaeb64d6cdd444" style={{ width: '100%', maxWidth: '680px', borderRadius: '12px' }} data-path="images/merchants/explodely-postback-setup-steps.mp4" />

### Seller IPN

The IPN sends sales, rebills, refunds and rebill cancels. The **Seller IPN** step in Postback Setup has the URL and these steps.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/TheZiP6_enj2X67g/images/merchants/explodely-ef-setup-ipn.png?fit=max&auto=format&n=TheZiP6_enj2X67g&q=85&s=894c03dae2f2a9b0e9c455b5a6bc480f" alt="The Seller IPN step of Postback Setup for Explodely: the IPN URL with Copy and the five steps in Explodely" width="2236" height="1338" data-path="images/merchants/explodely-ef-setup-ipn.png" />

1. Log in to your Explodely seller account
2. Open **Seller Hub** → **Settings** and expand **Global IPN** under **Developers**
3. Paste the IPN URL (with your secret) into **IPN URL**, set **Send IPN** to Yes and **IPN Type** to POST. Leave **Refund IPN** empty.
4. Click **Update**

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-global-ipn.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=530e704cd75a773ad8c28ee986af8df9" alt="Explodely Settings, Developers, Global IPN with IPN URL, Send IPN, IPN Type, Try IPN Builder and Update" width="2784" height="1336" data-path="images/merchants/explodely-global-ipn.png" />

### Webhooks

Webhooks cover the events the IPN does not send. In Explodely, open **Seller Hub** → **Integrations**, go to the **Webhook** tab and click **Add Webhook**.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-webhook-tab.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=c938ea99891b405f3b776d2fb79785af" alt="Explodely Integrations page on the Webhook tab with the Add Webhook button" width="2236" height="762" data-path="images/merchants/explodely-webhook-tab.png" />

Add three webhooks, one per row below. For each one:

1. Choose your **Funnel** (required) and leave **Product(s)** on all products
2. Give it a **Webhook Name** and pick the **Event Name**
3. Set **Request Type** to POST and paste that event's URL from Postback Setup into **Webhook URL**
4. Tick every data point that appears under the form, then click **Submit**

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-webhook-form.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=b88f6114bdec3ca5ffd0c1715845cdc9" alt="The Explodely webhook form: Funnel, Event Name, Request Type, Webhook URL, data point checkboxes and Submit" width="2784" height="1340" data-path="images/merchants/explodely-webhook-form.png" />

| Event Name | URL ends with | Recorded as |
| - | - | - |
| Chargeback | `?event=chargeback` | A chargeback linked to the original order |
| Partial | `?event=partial` | An abandoned checkout, when no purchase follows within 20 minutes |
| Decline | `?event=decline` | A failed payment |

The **Webhooks** step in Postback Setup has the three URLs, each with its own **Copy**.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/TheZiP6_enj2X67g/images/merchants/explodely-ef-setup-webhooks.png?fit=max&auto=format&n=TheZiP6_enj2X67g&q=85&s=7dc0e32bf47b44fcf082509a2d5a10cf" alt="The Webhooks step of Postback Setup for Explodely: where to add them and the Chargeback, Partial and Decline URLs, each with Copy" width="2784" height="1338" data-path="images/merchants/explodely-ef-setup-webhooks.png" />

Explodely webhooks carry no event name, which is why each one needs its own `?event=` URL. Do not add webhooks for Sale, Rebill, Refund or Rebill Cancel: the IPN already sends those, and a webhook for them records each one twice.

## Step 4: Test the connection

1. In ElasticFunnels, open the **Test** step of **Postback Setup** and leave it open. It shows **Waiting for a test postback** and checks every 5 seconds for 2 minutes.
2. In Explodely, go back to **Seller Hub** → **Settings** → **Global IPN** and click **Try IPN Builder**
3. Paste the IPN URL (with your secret) into **Enter IPN URL**, pick any fields and click **Submit**. Explodely sends a sample IPN to that URL.
4. The first postback that reaches ElasticFunnels with the right secret marks the merchant verified, even a sample like this one. The status next to the dialog's title changes to **Verified** and **Needs Setup** clears from the merchant's row. If nothing arrives in 2 minutes, it shows **No test yet** with **Check again**.

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/hcOGtUmSK8WRvfJL/images/merchants/explodely-ipn-builder.png?fit=max&auto=format&n=hcOGtUmSK8WRvfJL&q=85&s=e0493677d383989250f354f4d38ac9af" alt="The Try IPN Builder dialog in Explodely with the IPN URL field, the field chips and Submit" width="2784" height="716" data-path="images/merchants/explodely-ipn-builder.png" />

<img src="https://mintcdn.com/elasticfunnels-8a91cd9d/TheZiP6_enj2X67g/images/merchants/explodely-ef-setup-test.png?fit=max&auto=format&n=TheZiP6_enj2X67g&q=85&s=869f427c7491f8d961ae3e035ed4b1d3" alt="The Test step of Postback Setup for Explodely: the waiting status card and how to send a test" width="2784" height="1338" data-path="images/merchants/explodely-ef-setup-test.png" />

Then place a real test sale: open one of your payment links with `?testmode=yes` added, complete the order, and check it under **Reports** → **Conversions**.

## Payment links

Use the standard tag on your sales page:

```html theme={null}
<a href="[BUY=SLEEP_GUMMIES_1]">Buy Now</a>
```

It becomes an Explodely payment link with the visitor's click code attached:

```
https://explodely.com/p/<product id>?custom1=<click code>&tid=<click code>
```

| Parameter | What it carries |
| - | - |
| `custom1` | The ElasticFunnels click code. Explodely returns it on the seller IPN. |
| `tid` | The click code again, on visits that did not come from an affiliate. Affiliates use `tid` for their own tracking, so it is left to them on affiliate traffic. |
| `custom2` to `custom4` | `subid`, `subid2` and `subid3` from the page URL, when present |

ElasticFunnels never adds `tpa` to a payment link, because a third-party affiliate ID sets that product's Explodely commission to 0%.

A payment link you paste by hand (`https://explodely.com/p/...`) gets `custom1` added when the page renders. A `custom1` you set yourself is kept.

## How orders are recorded

* **Matching to the visit:** the postback is joined to the click by `tid`, then `custom1` to `custom5`, then the buyer's IP address.
* **Rebills** arrive on the IPN as a sale with `rebill=yes` and are recorded as subscription rebills.
* **Upsells** are recognised by the classification of the mapped product, since the Explodely IPN has no front-end flag.
* **Refunds and chargebacks** link to the purchase by order ID. One for an order ElasticFunnels never recorded, for an order already fully reversed, or for more than the amount left is acknowledged with `200` and not recorded, so Explodely stops retrying it. Explodely can send one chargeback both as an IPN refund and as a chargeback webhook; only the first is recorded.
* **Currency** is recorded as USD.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Explodely shows the postback failing with 401">
    The URL is missing the callback secret, or the secret does not match the one saved on the merchant. Copy the URL again from **Postback Setup** and replace `YOUR_CALLBACK_SECRET` with the saved value. If you no longer have it, enter a new secret on the merchant and update every Explodely IPN and webhook URL.
  </Accordion>

  <Accordion title="The merchant still says Needs Setup">
    No postback with the right secret has reached ElasticFunnels yet. Check that **Send IPN** is Yes and the IPN URL ends with your callback secret, then send a sample with **Try IPN Builder**.
  </Accordion>

  <Accordion title="Every refund appears twice">
    A refund webhook was added in Seller Hub as well as the IPN. Remove the webhook: refunds come through the IPN.
  </Accordion>

  <Accordion title="Sales recorded with no click attribution">
    The payment link reached Explodely without `custom1` or `tid`, for example a link built in a script that runs after the page renders. Use a `[BUY=...]` tag, or a plain `explodely.com/p/` link in the page HTML. Inbound payloads are recorded under **Logs** → **Inbound Postbacks**.
  </Accordion>

  <Accordion title="Buy link points at the wrong product">
    Check the product's **Merchant Product ID** for explodely. With no mapping, the ElasticFunnels product code is sent as the product ID.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.