Connect CheckoutChamp
CheckoutChamp calls Whence each time an order is placed. Whence stores it with your other orders, links it to the visit it came from, and sends the purchase to your active ad platforms, with the same consent rules as your Shopify orders.
What Whence receives
- New sales and upsells, sent by an Export Webhook Profile of type Postback, as JSON. Whence keeps only orders whose status is Complete; refunds and other events are read and ignored.
- The fields you map: order ID, total, currency, date, email, phone, city, state, zip, country, and up to five products (product1 to product5) with name, SKU, quantity and price.
- The same order sent twice is stored once. CheckoutChamp keeps retrying a failed webhook, and none of its retries creates a second sale.
CheckoutChamp sends webhooks every 15 minutes, so a new order can take that long to show up. It does not send orders paid with a test card.
In Whence
Step 1: Get your webhook address
In Whence, open Setup > Connections, find CheckoutChamp under Checkouts and funnels, click Set up, then Create my webhook address. Click Copy next to Your webhook address.
Keep it secret: anyone with this address can send orders to your store in Whence. CheckoutChamp does not sign its webhooks, so the secret part of the address is the proof. Paste it in CheckoutChamp only.
Set it up in CheckoutChamp
Step 2: Add an Export Webhook Profile
In CheckoutChamp, open ADMIN, then EXPORTS, and click the green + to add an Export Webhook Profile. Choose the type Postback.
Step 3: Paste the address
Paste your Whence address as the URL. Add the static mapping header:Content-Type with the value application/json, so the order is sent as JSON.
Step 4: Map the fields
Map each field of the table below: the name on the left, the CheckoutChamp field on the right. Whence also reads CheckoutChamp’s own field names, if you reuse an existing profile.
| Name | CheckoutChamp field |
|---|---|
| order_id | orderId |
| client_order_id | clientOrderId |
| status | orderStatus |
| total | totalPrice |
| currency | currencyCode |
| created | dateCreated |
| emailAddress | |
| phone | phoneNumber |
| city, state, zip, country | city, state, postalCode, country |
| product1_name, product1_sku, product1_qty, product1_price | the same names (up to product5) |
| whence_vid | orderCustomFields (custom field whence_vid) |
Step 5: Choose what to export
In Routing, tick New Sales and Upsells, and choose the campaigns to export. Whence ignores the other events.
Step 6: Carry the visitor ID
Create an order custom field named whence_vid (Campaign > Custom Fields). Then copy the Script for your checkout page from the Whence window and paste it in Funnel Settings > Tracking Pixels > Custom Head Tracking Code.
Back in Whence
Step 7: Avoid counting purchases twice
CheckoutChamp can fire its own pixels, without an event ID Whence could reuse. Under Does CheckoutChamp already send purchases to an ad platform?, tick the platforms it already sends purchases to (Meta, Google Ads, TikTok, Snapchat, Pinterest). Whence will not send a second purchase there. See Deduplication with native pixels.
Step 8: Test it
Click Send a test order. Whence sends an order in CheckoutChamp’s format to your own address, so it goes through the real chain. It is never stored.
- “Test order received and read. It is not counted in your sales.” The window then shows Last test order with the date.
- “Whence refused this address. Create a new one.” Click New address and paste the new one in CheckoutChamp.
- “Whence could not read the test order.” or “The test did not go through. Try again in a moment.”
The tile stays on Waiting for first order until a real order arrives, then shows Connected with the number of orders received.
How an order finds its visit
Most reliable: the Whence visitor ID carried to your checkout by two scripts. Otherwise, the same email or phone as a visit in the two hours before the order. Each order keeps which one was used. An order with no match still counts as a sale, without a visit.
- Script for your checkout page: copies the visitor ID into a hidden field of the order form, so the order comes back with it.
- Script for your store: type your Checkout domain (for example checkout.example.com), copy the script, and paste it in your store theme after the Whence tracker. Links to your checkout then carry the visitor ID, once the visitor has consented.
Errors you may see
When the last call could not be stored, the tile shows Error and the window says why:
- “The last call from CheckoutChamp could not be read. Check that it sends JSON or form fields.”
- “The last order from CheckoutChamp had no order ID. Check the field mapping.”
- “The last order from CheckoutChamp had no readable amount. Check the field mapping.”
New address and Disconnect both stop the current address at once. CheckoutChamp’s calls are then refused until you paste a new address there. If you set CheckoutChamp up again after disconnecting, you get a new address.
Purchases go to your ad platforms only with marketing consent from the linked visit, as explained in The funnel Whence sends.