Back to roadmaps paddle Course

Tracking Checkout Event Callbacks in Frontend

To provide a good user experience, your frontend application must respond when the user completes a purchase or closes the checkout popup.


1. Subscribing to Checkout Callbacks

Pass an eventCallback function inside the Paddle checkout settings payload.

import { getPaddle } from "../lib/paddleClient";

async function openCheckoutWithCallbacks(priceId: string) {
  const paddle = await getPaddle();
  
  if (!paddle) return;

  paddle.Checkout.open({
    items: [{ priceId, quantity: 1 }],
    settings: {
      eventCallback: (event) => {
        const type = event.name;
        
        switch (type) {
          case "checkout.completed":
            console.log("Purchase complete! Transaction payload details:", event.data);
            alert("Thank you for your purchase!");
            break;
          case "checkout.closed":
            console.log("Visitor dismissed checkout popup.");
            break;
          case "checkout.warning":
            console.warn("Payment validation warning:", event.data);
            break;
        }
      },
    },
  });
}

2. Key Event Lifecycle Phases

  • checkout.loaded: Triggers when the checkout iframe completes loading in the client overlay.
  • checkout.paymentSelected: Triggers when the customer selects a payment method (such as PayPal or credit card).
  • checkout.completed: Triggers when payment processing succeeds. Returns transaction information (IDs, prices, quantities).
  • checkout.closed: Triggers when the user closes the overlay card without completing a payment.
Published on Last updated: