Webhooks

Use Webhooks to automate and integrate your platform with Checkout Page.

What are webhooks?

Webhooks are automated messages sent from apps when something happens. They have a message—or payload—and are sent to a unique URL—essentially like an app’s phone number or address. They’re a simple way your online accounts can “speak” to each other and get notified automatically when something new happens.

Webhooks, unlike an API that continuously checks if there is new information, only sends new information when an event happens to trigger it.

In the context of Checkout Page, whenever someone converts at checkout, a message is sent to the webhook URL you’ve set up. This message contains data related to the event that just happened.

Use cases

Give customers access to your software or app When a customer makes a purchase, use webhooks to grant the customer immediate access to your software or app.

CRM Integration (ActiveCampaign, Hubspot, Salesforce, Zoho) Webhooks can ensure real-time synchronization between Checkout Page and your CRM. When a new subscription or purchase occurs, the customer’s details and transaction information are automatically updated in the CRM.

Event Management (EventBrite, Airtable) When a customer purchases a ticket to an event, a webhook can update the event management system in real-time, helping to manage attendee lists, seat allocation, and communication with attendees.

Notifications (Slack, Microsoft Teams) Get notified of purchases by setting up an Incoming Webhook in Slack or Microsoft Teams.

Setup instructions

Setting up webhooks on Checkout Page is straightforward. Webhooks are linked to individual checkouts, to make it easy to set up and control.

Follow the steps below:

  1. Log in to your Checkout Page account and navigate to the dashboard
  2. Click on the checkout you want to set up Webhooks for
  3. Navigate to After payment and open Integrations
  4. Find Webhooks and click to Add integration
image-8da6e3.png
  1. In the pop-up, enter the Webhook URL. This URL should be from the application which will process the incoming webhook (for instance, your backend’s API endpoint)
image-9f9651.png
  1. Save your changes. Your webhook URL will now be listed under Active integrations

image-6c0cb8.png

That’s it! You’ve successfully set up a webhook. Now, whenever the event you selected occurs, Checkout Page will send a POST request with the event’s data to the URL you provided.

Webhook events

Currently, there is just one webhook event: conversion

The conversion event happens whenever a checkout is submitted successfully.

In the future, we will add subscription life cycle events such as: - subscription_created - subscription_payment_succeeded - subscription_canceled

Webhook event payload

The event payload is the data that is sent via the webhook when an event occurs.

Each payload will contain a timestamp of when the event occurred, an event indicating what type of event occurred, and a data object containing the specific details for that event.

Please note that the received data might vary depending on your checkout settings and the products or plans you have.

You can use Test payments in the dashboard to simulate the conversion event. Use the livemode property to distinguish between live and test payments.

Event - conversion

Object - payment - subscription - submission

Payments

When a new payment is made, the following information is sent:

{
  "event": "conversion",
  "object": "payment",
  "data": {
    "fields": {
      "customer_email": "test@checkoutpage.co", // field reference: field value
      "quantity": "1", // field reference: field value
      "shipping_address_line1": "357 Elm Drive", // field reference: field value
      "shipping_address_city": "New York", // field reference: field value
      "shipping_address_country": "United States", // field reference: field value
      "shipping_address_postal_code": "10025" // field reference: field value
    },
    "variants": {
      "size": { // variant reference
        "name": "Size", // variant name
        "selectedOption": "Medium ", // variant option name
        "price": "10.00", // variant option price
        "sku": "100" // variant option sku
      },
      "color": { // variant reference
        "name": "Color", // variant name
        "selectedOption": "Green", // variant option name
        "sku": "" // variant option sku
      }
    },
    "amount": "23.99", // total payment amount
    "currency": "usd", // currency
    "orderId": "02009743", // order id

    "customerName": "Sander", // customer name
    "customerEmail": "test@checkoutpage.co", // customer email
    "customerCreatedDate": "2021-08-19T13:58:27.604Z", // customer created date
    "customerId": "611e6383cf7d2c0020380e53", // customer id
    "stripeCustomerId": "cus_K4KQBkiwC8LG9E", // stripe customer id
    
    "licenseKey": "1234567890", // license key
    "licenseKeyUses": 0, // license key uses
    "licenseKeyEnabled": true, // license key enabled
    
    "couponId": "645136a20779606f5a659dec", // coupon id
    "couponCode": "COUPON", // coupon code
    "couponPercentOff": 20, // coupon percent off
    "couponAmountOff": "0", // coupon amount off 
    "couponDiscount": "4.80", // coupon discount

    "createdDate": "2023-05-17T12:43:51.251Z", // payment created date
    "status": "paid", // payment status
    "id": "6464cc07822f15f2aca067dd", // payment id
    "stripePaymentId": "pi_1N3LpOJ7i86GeQKlEcsyGnwY",
    "productPrice": "13.99", // product price
    "queryParameters": {
      "utm_source": "google" // query parameter key: query parameter value
    },
    "livemode": false, // livemode
    "productTitle": "T-shirt", // product title
    "productTotalRevenue": "23.99", // product total revenue
    "productTotalNumberOfSales": 1, // product total number of sales
    "checkoutId": "6464cbba822f15f2aca06734", // checkout id
    "checkoutSlug": "t-shirt" // checkout slug
  }
}

Subscriptions

When a new subscription is created, the following information is sent:

{
  "event": "conversion",
  "object": "subscription",
  "data": {
    "fields": {
      "customer_name": "Test", // field reference: field value
      "customer_email": "test@checkoutpage.co"
    },
    "variants": {
      "tier": { // variant reference
        "name": "Tier", // variant name
        "selectedOption": "Grow", // variant option name
        "price": "49.00", // variant option price
        "sku": "grow-tier", // variant option sku
        "stripePriceId": "price_1N3KttJ7i86GeQKlrttqR7gj", // variant option stripe price id
        "stripeProductId": "prod_NoyrrdTsenY3qK" // variant option stripe product id
      }
    },
    "amount": "49.00", // total subscription amount
    "currency": "usd", // currency
    "orderId": "16635413", // order id

    "customerName": "Test", // customer name
    "customerEmail": "test@checkoutpage.co", // customer email
    "customerCreatedDate": "2023-05-02T16:13:22.190Z", // customer created date
    "customerId": "645136a20779606f5a659dec", // customer id
    "stripeCustomerId": "cus_NozpnZaByGmgr7", // stripe customer id

    "licenseKey": "1234567890", // license key
    "licenseKeyUses": 0, // license key uses
    "licenseKeyEnabled": true, // license key enabled

    "couponId": "645136a20779606f5a659dec", // coupon id
    "couponCode": "COUPON", // coupon code
    "couponPercentOff": 20, // coupon percent off
    "couponAmountOff": "0", // coupon amount off 
    "couponDuration": "forever", // coupon duration (once, repeating, forever)
    "couponDurationInMonths": null, // coupon duration in months
    "couponDiscount": "9.80", // coupon discount

    "createdDate": "2023-05-02T16:13:22.234Z", // subscription created date
    "status": "active", // subscription status
    "id": "645136a20779606f5a659dfc", // subscription id
    "productPrice": "49.00", // product price
    "discountedFrom": "69.00", // discounted from
    "interval": "month", // subscription interval
    "intervalCount": 1, // subscription interval count (1 is monthly/yearly, 2 is every 2 months/years, and so on)
    "endsAfterPayments": 4, // payment plan ends after payments (null for regular subscription)
    "setupFee": "0", // setup fee
    "trailStart": "2023-05-02T16:13:21.000Z", // subscription trail start date
    "trialEnd": "2023-05-09T16:13:21.000Z", // subscription trail end date
    "canceledAt": "2023-05-02T16:13:21.000Z", // subscription canceled date
    "cancelAt": "2023-09-02T16:13:21.000Z", // subscription cancel at date
    "currentSubscriptionPeriodStart": "2023-05-02T16:13:21.000Z", // current subscription period start date
    "currentSubscriptionPeriodEnd": "2023-06-02T16:13:21.000Z", // current subscription period end date
    "sku": "", // sku
    "paymentGateway": "stripe", // payment gateway
    "paymentMethod": "card", // payment method
    "queryParameters": {
      "utm_source": "google" // query parameter key: query parameter value
    },
    "livemode": true, // livemode
    "stripeSubscriptionId": "sub_1N3LpOJ7i86GeQKlEcsyGsmD", // stripe subscription id
    "productTitle": "Subscription", // product title
    "productStock": 100, // product stock
    "productTrialPeriodDays": null, // product trial period days
    "productNumberOfSubscribers": 4, // product number of subscribers
    "productStripePlanId": "price_Noyr6dXsenY3qK", // product stripe price id
    "productStripeProductId": "prod_NoyrrdTsenY3qK", // product stripe product id
    "checkoutId": "64512687dd63fb2fac1e281c", // checkout id
    "checkoutSlug": "subscription" // checkout slug
  }
}

Submissions

When a new submission is made, the following information is sent:

{
  "event": "conversion",
  "object": "submission",
  "data": {
    "fields": {
      "customer_name": "Test", // field reference: field value
      "customer_email": "test@checkoutpage.co"
    },
    "variants": {
      "tier": { // variant reference
        "name": "Tier", // variant name
        "selectedOption": "Grow", // variant option name
        "sku": "grow-tier" // variant option sku
      }
    },
    "orderId": "52560220",  // order id
    "customerName": "Test", // customer name
    "customerEmail": "test@checkoutpage.co", // customer email
    "customerCreatedDate": "2023-05-02T16:13:22.190Z", // customer created date
    "customerId": "645136a20779606f5a659dec", // customer id
    "stripeCustomerId": "cus_NozpnZaByGmgr7", // stripe customer id, if exists

    "licenseKey": "1234567890", // license key
    "licenseKeyUses": 0, // license key uses
    "licenseKeyEnabled": true, // license key enabled

    "createdDate": "2023-05-02T16:13:22.234Z", // submission created date
    "id": "6464b541822f15f2aca06477", // submission id
    "sku": "", // sku
    "queryParameters": {
      "utm_source": "google" // query parameter key: query parameter value
    },
    "livemode": false, // livemode
    "productTitle": "Lead", // product title
    "productTotalNumberOfSales": 1, // total number of submissions
    "checkoutId": "645a4af4ef36dfae673f283f", // checkout id
    "checkoutSlug": "lead-3" // checkout slug
  }
}