Skip to main content

Cents Webhooks

T
Written by Taylor Panagakis
Updated this week

Cents provides webhook support so your systems can stay in sync with real-time customer and order activity. By subscribing to specific events, you can automate workflows and trigger actions in external systems when changes occur in Cents.

This guide covers:

  • Supported webhook events

  • Common integration use cases

  • Example payloads for customer and order events


Supported Webhook Events

Cents currently supports the following webhook events:

  • Customer Created (customer_created)

  • Customer Updated (customer_updated)

  • Order Created (order_created)

  • Order Updated (order_updated)

  • Order Completed (order_completed)

  • Customer Marketing Opt-in (customer_marketing_optin)

Whenever one of these events is triggered, Cents will send a POST request with a JSON payload to the webhook URL(s) you provide.


Common Use Cases

Here are a few examples of how these events can be used:

  • Customer Created / Updated

    • Sync data in an external source with the Business Manager

    • Segment users based on commercial vs residential accounts

  • Order Created / Updated / Completed

    • Alert staff via external messaging tools

    • Log order activity in a spreadsheet or dashboard

    • To alert when Inventory is low

    • To calculate store capacity


Example Payloads

Below are sample JSON payloads for each type of event.

Headers

All webhook requests include the following headers including IP & timestamp:

Customer Events

Field Legend

Field

Type

Notes

event

string

customer_created or customer_updated

customer.id

integer

Customer ID associated with the Business

customer.firstName

string

Customer first name

customer.lastName

string

Customer last name

customer.phoneNumber

string

Customer phone number with country code

customer.businessName

string

Business the customer was created for

customer.email

string

Customer email (if given)

customer.isCommercial

boolean

Whether the customer is a commercial account (true/false)

customer.isInvoicingEnabled

boolean

Whether invoicing is enabled for this customer (true/false)

customer.centsCustomerId

integer

Customer ID associated with Cents

customer.referralCode

string

customerMetrics.creditBalance

float | null

Dollars. Null if no credit on account

customerMetrics.loyaltyPointsBalance

integer

Points balance. 0 if no points

{
"event": "customer_created", // or "customer_updated"
"customer": {
"id": "cust_12345",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+1 555-1234",
"businessName": "John's Cleaners",
"email": "[email protected]",
"isCommercial": false,
"isInvoicingEnabled": false
"centsCustomerId": 738,
"referralCode": "bd5da437"
},
"customerMetrics": {
"numOrders": 5,
"totalOrderValue": 250.0,
"lastOrderDate": "2025-02-14T10:00:00Z",
"creditBalance": 10.0,
"loyaltyPointsBalance": 200
}
}

Order Events

Field Legend

Field

Type

Notes

event

string

order_created, order_updated, order_completed

order.id

integer

Order ID unique identifier

order.status

string

SUBMITTED, READY_FOR_PICKUP, PICKED_UP, IN_PROGRESS, READY_FOR_RETURN, OUT_FOR_DELIVERY, COMPLETED, CANCELLED

order.orderType

string

ONLINE (pickup & delivery or ordered through LiveLink)

IN_STORE (wash & fold or ordered through POS)

order.returnMethod

string

DELIVERY or PICKUP

order.orderTotal

float

Dollars. May be 0 if order hasn't been weighed

order.tipAmount

float | null

Dollars. Null if no tip

order.creditAmount

float | null

Dollars. Null if no credit applied

order.promotionAmount

float

Dollars. 0 if no promotion applied

order.balanceDue

float

Dollars. Remaining amount owed

order.pickupDeliveryFee

float

Dollars. 0 if no fee Configured in the Business Manager

order.returnDeliveryFee

float

Dollars. 0 if no fee Configured in the Business Manager

order.recurringDiscountInCents

integer

Cents. 0 if no recurring discount. Configured in the Business Manager

order.startPickupWindow

string

Unix timestamp in milliseconds

The start of the selected Window for the customer pickup

order.endPickupWindow

string

Unix timestamp in milliseconds
The end of the selected Window for the customer pickup

order.startReturnWindow

string

Unix timestamp in milliseconds

The start of the selected Window for the customer return delivery

order.endReturnWindow

string

Unix timestamp in milliseconds

The end of the selected Window for the customer return delivery

services.id

integer

Service ID unique service identifier in Cents

services.name

string

Name of the service, configured in the Business Manager

services.quantity

float

Number of units added (ie. laundry bags or dry cleaning items)

services.totalPrice

float

Total price of this service after weighing. If 0, then order has not been weighed

services[].customerSelection

boolean

Whether the customer selected this service themselves, if false then placed through the Business Manager

services.unitPrice

integer

Price of a single unit

To calculate weight, take services.totalPrice divided by services.unitPrice

services[].serviceCategoryType

string

LAUNDRY, DRY_CLEANING, CUSTOM (Configured via Business Manager)

services[].modifiers[].pricingType

string

PER_POUND or FLAT

customer.phoneNumber

string

E.164 format, e.g. +12345678910

customer.centsCustomerId

integer

Cents-internal customer ID, distinct from customer.id which is the customer id related to the business

customerMetrics.loyaltyPointsBalance

integer

Points balance. 0 if no points

attributionSource

string | null

Source of order attribution if tracked (Ads, Website, etc)

attributionParams

object | null

Raw attribution params if tracked

{
"action": "order_created", // or "order_updated"
"order": {
"id": 12345,
"storeId": 24
"status": "SUBMITTED",
"orderTotal": 29.99,
"placedAt": "2025-02-14T10:05:00Z",
"updatedAt": "2025-02-14T10:05:30Z"
"completedAt": null,
"orderCode": "00123",
"orderType": "ONLINE"
"tipAmount": 3.0,
"creditAmount": 0.0,
"promotionAmount": 2.0,
"balanceDue": 24.99,
"returnMethod": "PICKUP",
"pickupDeliveryFee": 5.0,
"returnDeliveryFee": 5.0,
"recurringDiscountInCents": 0,
"dueDate": "2025-02-15T10:05:00Z",
"storeName": "LaundryExpress #1",
"storeName": "Dispatch Testing",
"startPickupWindow": "1776301200000",
"endPickupWindow": "1776308400000",
"startReturnWindow": "1776362400000",
"endReturnWindow": "1776369600000",
"formattedPickupWindow": "Wednesday, 4/15/2026, 9:00 PM - 11:00 PM", "formattedReturnWindow": "Thursday, 4/16/2026, 2:00 PM - 4:00 PM"
},
"services": [
{
"id": "43",
"name": "Wash & Fold",
"quantity": 1,
"totalPrice": 25.0,
"customerSelection": true,
"unitCost": 25.0,
"serviceCategory": "Wash & Fold",
"serviceCategoryType": "LAUNDRY",
"modifiers": [
{
"id": "mod_56789",
"name": "Stain Treatment",
"pricingType": "FLAT",
"totalPrice": 4.99,
"unitCost": 4.99,
"quantity": 1
}
]
}
]
},
"customer": {
"id": "314",
"firstName": "Jane",
"lastName": "Smith",
"phoneNumber": "+1 555-6789",
"businessName": "Jane's Bakery",
"email": "[email protected]",
"isCommercial": false,
"isInvoicingEnabled": false
"centsCustomerId": 738,
"referralCode": "bd5da437"
},
"customerMetrics": {
"numOrders": 12,
"totalOrderValue": 450.75,
"lastOrderDate": "2025-02-13T15:30:00Z",
"creditBalance": 5.0,
"loyaltyPointsBalance": 320
}
"attributionSource": null,
"attributionParams": null
}

Customer Marketing Opt-in

{   
"event": "customer_marketing_optin",
"customer": {
"id": 815,
"firstName": "Francine",
"lastName": "Dong",
"phoneNumber": "+11701610914",
"businessName": null,
"email": "[email protected]",
"isCommercial": false,
"isInvoicingEnabled": false,
"centsCustomerId": 738,
"referralCode": "bd5da437" },
"customerMetrics":
{
"numOrders": 56,
"totalOrderValue": 447.35,
"lastOrderDate": "2026-04-15T21:22:19.782Z",
"loyaltyPointsBalance": 500 }
}

Getting Started

To begin using webhooks with Cents:

  1. Set up your publicly accessible HTTP POST endpoint to receive webhook payloads. Make sure to test your endpoint, otherwise you will receive a webhook disabled email.

  2. Share your webhook endpoint(s) with your CSM
    Once your endpoints are tested and ready, send the URL(s) to your Cents Customer Success Manager. You can share one or multiple endpoints depending on your setup.

  3. Cents enables event triggers for your account
    Your CSM will add your endpoint(s) to your account which automatically enables all of the above Cents webhook events.

  4. Start receiving real-time data
    Once configured, Cents will begin sending event payloads to your endpoint(s) as they occur. Each event includes structured JSON data for easy parsing.

  5. Choose your integration path

    • Build your own workflow: Write custom code to handle webhook events and trigger downstream systems (e.g., update a CRM or internal dashboard).

    • Use a no-code tool like Zapier: Let Zapier catch webhooks and automate tasks across apps (e.g., send customer messages, log data to Google Sheets, update marketing tools). Check out our Zapier Integration Guide here.


Need Help?

Webhooks let you automate your workflow and keep your systems aligned with real-time data from Cents. Check out our Zapier Integration Guide or Make Integration Guide if you have want to explore a no-code way to utilize webhooks. If you're looking for a more comprehensive API guide, please reach out to your CSM.


Did this answer your question?