Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.datalyr.com/llms.txt

Use this file to discover all available pages before exploring further.

The Checkout Champ (CC) integration captures purchases, refunds, chargebacks, subscription rebills, and cancellations from your Checkout Champ funnel and stitches them back to the Shopify storefront visitor who clicked the original ad. Without this integration, Shopify+CC merchants typically drop from ~90% Shopify attribution down to ~75% email-only stitching at the CC boundary. With it, the headline number is up to 95% 1.

How it works

Shopify storefront (dl.js)          ────────► Checkout Champ funnel (dl.js)
  - captures fbclid + click time             - reads _dl_* URL params on init
  - stamps outbound link to CC with          - restores visitor_id + Meta cookies
    ?_dl_vid=…&_dl_fbc=…&_dl_fbp=…           - aggressive email capture (autoIdentify)
    &_dl_fbclid=…&_dl_fbclid_at=…
  - force-flushes events on click                       │

                                             Order completes in CC


                          webhooks.datalyr.com/checkoutchamp/{your_workspace_id}
                          (CC Export Profile posts here per event type)


                                       Datalyr resolves identity → CAPI postback

What gets tracked

Checkout Champ eventDatalyr eventHas revenue
Order paidpurchaseYes
Upsell purchasepurchaseYes
RefundrefundYes (-)
ChargebackchargebackYes (-)
Subscription rebillrecurringYes
Subscription cancellationcancellationNo
Test orders (CC test card, card_last4 = 0000) route to a sandbox datasource and never pollute production reporting. They also skip CAPI forwarding so no test events fire to Meta / Google / TikTok.

Setup

1. Connect Checkout Champ in Datalyr

Go to Sources → Add Checkout Champ. Copy the dl.js Global Head Script shown in the modal. You’ll also see five postback URLs — keep the modal open while you configure CC.

2. Paste the Global Head Script into CC

CC dashboard → Account Settings → Global Scripts. Paste the Datalyr script. It runs on every funnel page and:
  • Restores the visitor’s ID + Meta click signals from the _dl_* URL params the storefront stamped.
  • Captures email on form blur (Klaviyo embeds, lead forms, checkout email field) so the postback can be attributed even if the visitor_id bridge missed.

3. (If using Shopify) Update your storefront dl.js init

Add checkoutChampDomains to the existing dl.js init on your Shopify storefront:
datalyr.init({
  workspaceId: '<your_workspace_id>',
  checkoutChampDomains: ['pay.yourbrand.com', 'order.yourbrand.com'],
  // ...your existing config
});
This switches on link stamping: every <a href> pointing at one of those domains gets ?_dl_vid=…&_dl_fbc=…&_dl_fbp=…&_dl_fbclid=…&_dl_fbclid_at=…&_dl_gclid=… appended automatically. Force-flushes events on click so identify() lands before the browser navigates away. autoIdentify defaults on when this is set.

4. Create five Export Profiles in Checkout Champ

CC dashboard → CRM → Affiliate Setup → Affiliate Pixels (or Export Profiles, depending on your CC plan). One profile per event type, all pointing at the same workspace URL with a different event_type query parameter. Copy each URL from the Datalyr modal:
  • Purchaseevent_type=purchase
  • Refundevent_type=refund
  • Chargebackevent_type=chargeback
  • Recurring (subscription rebill)event_type=recurring
  • Cancellationevent_type=cancellation
Map CC’s macro tokens into the URL placeholders ([orderId], [emailAddress], [firstName], etc.). The advanced-matching fields (first_name, last_name, phone, city, zip, country, ip, user_agent) are the biggest free EMQ lift for Meta CAPI — include them all from day one.

5. Place a test order

Use CC’s test card flow (card number ending 0000). Walk the funnel end-to-end. Within 5 minutes you should see:
  • CC postback in sandbox — confirms the worker received and parsed the postback. View in Datalyr’s events sandbox.
  • No Shopify webhook for the same order — confirms the Shopify source_name dedup is working.
If either fails, see Troubleshooting below.

Why we use our own URL params instead of CC’s c1c5

CC exposes 5 pass-through postback tokens (c1c5) intended for tracking integrations. We deliberately don’t use them. Reasons:
  1. Other attribution providers (Cometly, Triple Whale, Hyros) don’t rely on c1c5 for organic-traffic attribution either — strong signal the path is unreliable outside affiliate flows.
  2. We control both ends of dl.js — owning the bridge end-to-end lets us extend it (click-time preservation, etc.) without waiting on CC’s roadmap.

Known limitations (v1)

  • Meta Pixel + Meta CAPI dedup on the CC thank-you page — not implemented in v1. If you also have a Meta Pixel firing on CC thank-you pages, you’ll see expected duplicate Purchase events in Meta Events Manager. Phase 2 EMQ optimization.
  • GDPR consent on the CC side — the merchant’s responsibility. Datalyr doesn’t manage CC’s consent banner.
  • Chargebacks more than 90 days after the original purchase — fall outside the materialized view window. They still land in raw events and forward to Meta in real time, but won’t backfill the per-hour chargeback metric against the original order’s hour.
  • order.source_name value from CC’s Shopify push-back — verified per merchant during the first test order. If your CC plugin uses a non-standard source name, Datalyr support will add it to the dedup allow-list.

Troubleshooting

The postback never arrives. Confirm the Export Profile URL is exactly what the Datalyr modal shows. Common typos: missing ?event_type=… query string, public_id swapped for workspace UUID. Postback arrives but identity is “cold” (no fbclid/UTMs). Either the visitor_id bridge didn’t carry (likely the storefront’s checkoutChampDomains config doesn’t include the CC funnel domain) OR identify() never fired on the storefront. Check the Sources page for a verifier run, or contact support with the test order ID. The same order shows up in BOTH Datalyr’s CC source AND Shopify source. The Shopify dedup didn’t trigger. Send Datalyr support the Shopify order’s source_name value and the order’s note_attributes array so we can extend the dedup allow-list. Multi-currency revenue numbers look wrong. Datalyr stores raw amount + currency and normalizes to USD via a daily FX rate. If you see this within the first 24 hours of the integration going live, the FX feed may not have populated yet — refresh tomorrow.

Footnotes

  1. Conditional on visit-to-purchase within 7 days (the cookie window the visitor_id bridge uses) OR pre-purchase email capture (lead form, Klaviyo, logged-in account). iOS Safari ITP may degrade visitor_id-bridge effectiveness for repeat visitors past 7 days — email-stitch still applies.