Skip to main content
This guide covers setting up JVZoo as a merchant to sell your products through JVZoo’s hosted checkout, including the JVZoo funnel ID, buy links, the sales pixel, and affiliate attribution.
This page is for vending your own products on JVZoo. It is a different setup from the JVZoo Affiliate S2S integration, which is for promoting other sellers’ JVZoo products and earning commissions.They are independent — you can run both, and the two use different tracking parameters (vtid for your own sales, tid for affiliate commissions). Don’t configure one expecting it to cover the other.

How JVZoo differs from other merchants

JVZoo is a hosted checkout. Your funnel owns the sales pages; JVZoo owns the cart, the payment, and the upsell sequence.
  • There is no checkout API — buyers leave your page for JVZoo’s checkout.
  • One-click upsells run inside JVZoo’s funnel, not ElasticFunnels’. The jvzoo-checkout-state.js script that JVZoo gives you belongs in the <head> of your upsell pages.
  • The post-purchase thank-you page is configured per product in the JVZoo product editor, not passed as a redirect parameter.

Prerequisites

  • Active JVZoo seller account with an approved product funnel
  • Your JVZoo Account ID (the vendor number, e.g. 117845)
  • Your product IDs from JVZoo (e.g. 448013 for the front end)
  • Your JVZoo funnel ID — see Step 3

Step 1: Create the JVZoo merchant

  1. Go to SettingsMerchantsAdd Merchant
  2. Select Gateway: JVZoo
  3. Enter your Account ID — your JVZoo vendor number. This becomes the first segment of every buy link.
  4. Tick Create tracking pixels to have the JVZoo sales pixel added automatically (see Tracking pixel)
  5. Save

Step 2: Assign the merchant to a domain

  1. Go to SettingsDomainsEdit Domain
  2. Select your JVZoo merchant from the dropdown
  3. Save
All funnels on this domain now build JVZoo buy links.

Step 3: Get your JVZoo funnel ID

JVZoo buy buttons are generated per funnel, and the funnel ID is baked into the link:
To find it:
  1. Log in to your JVZoo Seller Dashboard
  2. Click the menu next to your product → Buy Buttons
  3. Select your Funnel from the dropdown at the top (not “No Funnel”)
  4. Read the last number off the generated button link — 99 in the example above
The same funnel ID appears on every product in that funnel, and in the tracking pixel URLs.
If your product is in a JVZoo funnel, use the buy buttons from the funnel, not from the individual product. A link missing the funnel segment sends buyers through JVZoo’s standalone-product flow, so your one-click upsells silently never run — the front-end sale still succeeds, which makes this fail quietly.
Selling a single product with no upsells? Choose No Funnel in JVZoo and leave JVZoo Funnel ID blank in ElasticFunnels. Buy links then have two segments instead of three, and everything else on this page works the same. See Direct purchase links.

Step 4: Set the JVZoo Funnel ID in ElasticFunnels

  1. Go to FunnelsEdit Funnel
  2. In the Domains section, find the row for your JVZoo domain
  3. Enter the funnel ID into JVZoo Funnel ID
  4. Save
It lives on the domain row rather than the funnel itself, so one funnel served on two domains can point at two different JVZoo funnels. This mirrors how ClickBank Pitch Flow ID works.

Product mapping

ElasticFunnels product codes are yours; JVZoo product IDs are numeric. Map them per product:
  1. Go to Products → edit the product
  2. Under Merchant Product IDs, set the jvzoo value to the JVZoo product ID (e.g. 448013)
If no mapping exists, the product code is sent as-is — which only works if your ElasticFunnels code happens to be the JVZoo numeric ID. Use the standard tag on your sales page:
With the merchant, mapping, and funnel ID configured, that expands to:
Upsell tags ([UPSELL=...]) build the same shape for your OTO products, carrying the same funnel ID and click code.
vtid is the vendor tracking parameter — your own sales. tid is the affiliate SubID, used when you promote someone else’s product. ElasticFunnels never writes to tid, so an affiliate’s own sub-tracking passes through untouched on affiliate-driven sales.
You don’t have to use [BUY=...] tags — a hardcoded JVZoo link works too, and works with or without a funnel. It must carry vtid, or the sale arrives with no click attribution. Use the {click_id} token and ElasticFunnels substitutes the visitor’s click code when the page renders:
In a backend script, use the template-engine syntax instead:
{click_id} and [click_id] (and their URL-encoded forms) are the legacy page-HTML substitutions and are still supported; {{ click_id }} is the current template-engine syntax.
The legacy {click_id} form is case-sensitive{CLICK_ID} is not substituted and ships the literal text to JVZoo, which then posts back a tracking ID like {CLICK_ID} that matches no click. Those sales are flagged as a malformed click ID and cannot be attributed.
Prefer [BUY=...] tags where you can: they pick up the funnel ID, product mapping, and affiliate ID automatically, so a hardcoded link is one more place to update when any of those change.

Tracking pixel

JVZoo requires a sales pixel on each sales page. Ticking Create tracking pixels when you add the merchant creates it for you:
Nothing to fill in — all three values resolve per page at render time: Because the product ID comes from the buy buttons, the same pixel works on your front end and every OTO page without editing.

Affiliate attribution

JVZoo only tells you which affiliate sent a visitor if you turn it on, per product:
  1. In the JVZoo product editor, find the sales page URL field
  2. Set Pass Affiliate ID to Sales Page to Yes
  3. Repeat for every product in the funnel
JVZoo then appends ?aid=<affiliate_id> when it hands the visitor to your page. ElasticFunnels stores it in the session and puts it back on the buy link as aff, so JVZoo credits the sale.
This setting is off by default. With it off, affiliate traffic arrives with no affiliate ID and those sales cannot be attributed — there is no way to recover the attribution afterwards.

Postbacks

Sales, refunds, and chargebacks for products you vend come back over JVZIPN. Set this up under JVZoo Vendor IPN — see JVZoo Vendor IPN for the secret key, IPN URL, and event mapping.
Set up JVZoo Vendor IPN, not JVZoo Affiliate S2S. The affiliate one listens for commissions on other sellers’ products and will never receive events for products you vend.

Troubleshooting

The buy link is missing its funnel segment, so JVZoo used the standalone-product flow. Check JVZoo Funnel ID is set on the funnel’s domain row, and that you copied it from the funnel’s buy buttons rather than the individual product’s.
Pass Affiliate ID to Sales Page is off for that product in JVZoo, so no aid ever reached your page. It must be enabled per product.
The IPN arrived without a tracking ID matching an ElasticFunnels click code. Either the link was hardcoded without ?vtid={click_id}, or the events are landing on the affiliate integration rather than JVZoo Vendor IPN. Inbound payloads are recorded under LogsInbound Postbacks.
The token wasn’t substituted, so JVZoo received it verbatim. Check the capitalisation — {click_id} is case-sensitive — and that it is in the page’s HTML rather than a tracking script or JS block.
{product_code_first} reads from the buy tags on the page. A page with no [BUY=...] or [UPSELL=...] tag has no product to report.