Skip to main content

Event actions

The Event Action Manager is a module that subscribes to events within the Propeller platform and executes actions with the event payload. You can execute multiple actions on the same event.

Two actions are currently supported: SEND_EMAIL and POST_TO_WEBHOOK.

SEND_EMAIL

Triggers the Template Module to render a template with the event payload and send it as email.

POST_TO_WEBHOOK

Posts the event payload as a JSON POST request to a webhook endpoint.

Supported events

Order events

EventDescriptionPayload
ORDER_CREATEDA new order or quote is createdOrder
ORDER_UPDATEDAn existing order or quote is updatedOrder
ORDER_DELETEDAn order or quote is deletedOrder ID only
ORDER_BULKBatch operation on ordersOrder
ORDER_SEND_CONFIRMATIONOrder confirmation triggered during checkout or via the "Send order to client" button in the Sales HubOrder

Quote events

EventDescriptionPayload
QUOTE_SENDA quote proposal is sent to the contact via the "Send to client" button in the Sales HubOrder
QUOTE_SEND_REQUESTConfirmation sent after a quote is requested by a customer from the frontendOrder
QUOTE_SEND_VALIDATIONA quote is sent to a senior account manager or sales manager for validationOrder

Company events

EventDescriptionPayload
COMPANY_CREATEDA new company is createdCompany
COMPANY_UPDATEDAn existing company is updatedCompany
COMPANY_DELETEDA company is deletedCompany
COMPANY_BULKBatch operation on companiesCompany

Contact events

EventDescriptionPayload
CONTACT_CREATEDA new contact is createdContact
CONTACT_UPDATEDAn existing contact is updatedContact
CONTACT_DELETEDA contact is deletedContact
CONTACT_BULKBatch operation on contactsContact
CONTACT_SEND_WELCOME_EMAILWelcome email sent to a new contactContact

Customer events

EventDescriptionPayload
CUSTOMER_CREATEDA new customer is createdCustomer
CUSTOMER_UPDATEDAn existing customer is updatedCustomer
CUSTOMER_DELETEDA customer is deletedCustomer
CUSTOMER_BULKBatch operation on customersCustomer
CUSTOMER_SEND_WELCOME_EMAILWelcome email sent to a new customerCustomer

Cart events

EventDescriptionPayload
CART_PURCHASE_AUTHORIZATION_REQUEST_SENDA purchase authorization request is sent to the authorization managerCart

Authentication events

EventDescriptionPayload
SEND_INIT_PASSWORDInitial password setup email sent to a contact or customerPasswordReset
SEND_RESET_PASSWORDPassword recovery email sent to a contact or customerPasswordReset

Other

EventDescriptionPayload
CUSTOM_EVENTUser-defined event with a custom payloadCustomPayload

Event payloads

Below is an example payload for each event type.

Order

{
"order": {
"id": 1,
"userId": 14644,
"accountManagerId": null,
"cartId": "01941780-c402-79ac-bade-0e9e37eb65c1",
"channelId": 1,
"shopId": 1,
"uuid": "01941781-1cb2-7993-bb33-60ed9da34d64",
"externalId": null,
"debtorId": "ANONYMOUS",
"status": "NEW",
"type": "dropshipment",
"source": "webshop",
"email": "noreply@acme.nl",
"emailDate": null,
"remarks": null,
"extra3": null,
"extra4": null,
"currency": "EUR",
"currencyRatio": "1.00000",
"language": "NL",
"date": "2024-12-30T12:18:45.000Z",
"statusDate": "2024-12-30T12:18:45.000Z",
"postageData": {
"method": "DELIVERY",
"taxPercentage": "0.00",
"requestDate": "2024-12-30T12:18:22.000Z",
"gross": "2000.00000",
"net": "2000.00000",
"tax": 0,
"partialDeliveryAllowed": "N",
"pickUpLocationId": 0,
"overruled": "Y",
"carrier": "Mark delivery company"
},
"paymentData": {
"net": "0.00000",
"gross": "0.00000",
"tax": "0.00000",
"taxPercentage": "0.00",
"method": "ACCOUNT",
"status": "UNKNOWN",
"statusDate": null,
"overruled": "N",
"accountingId": null
},
"total": {
"gross": "2050.00000",
"net": "2050.00000",
"tax": "0.00000",
"discountValue": "0.00000",
"discountType": "N",
"taxPercentages": []
},
"items": [
{
"id": 1,
"uuid": "01941780-df79-75a3-83a5-b851ac114c0c",
"class": "product",
"productId": 1,
"parentOrderItemId": null,
"quantity": 1,
"sku": "NCABD70004",
"notes": null,
"name": "Edge 1030 FietsComputer",
"supplier": "TECHDATA",
"supplierCode": "NCABD70004",
"manufacturer": "Lavazza",
"manufacturerCode": "NCABD70004",
"eanCode": null,
"originalPrice": "55.00000",
"price": "50.00000",
"priceTotal": "50.00000",
"priceNet": "50.00000",
"priceTotalNet": "50.00000",
"customerPrice": "50.00000",
"costPrice": "7.50000",
"discount": "5.00000",
"tax": "0.00000",
"taxPercentage": "0.00000",
"taxCode": "N",
"isBonus": "N",
"minimumQuantity": 1,
"unit": 1,
"package": "STK",
"packageUnit": "",
"packageUnitQuantity": "1",
"purchaseUnit": 1,
"purchaseMinimumQuantity": 1,
"requestDate": null
}
],
"invoiceUserId": 14644,
"validUntil": null,
"companyId": null,
"lastModifiedAt": "2024-12-30T12:18:45.048Z",
"originalOrderId": 0,
"exportedAt": null,
"exportStatus": "",
"exportMessage": null,
"addresses": [
{
"firstName": "Sophie",
"middleName": "",
"lastName": "Bakker",
"gender": "F",
"company": "",
"street": "Industrieweg",
"number": "12",
"numberExtension": "A",
"postalCode": "4283 GZ",
"city": "Giessen",
"region": "Zuid-Holland",
"country": "Netherlands",
"phone": "+31 20 123 4567",
"mobile": "+31 6 1234 5678",
"email": "sophie@acme.nl",
"code": "CUST-50123",
"notes": "",
"type": "invoice",
"icp": "N"
}
]
}
}

Contact

{
"contact": {
"tenant": "acme",
"id": 54321,
"firstName": "Sophie",
"middleName": "",
"lastName": "Bakker",
"phone": "+31 20 234 5678",
"email": "sophie@acme.nl",
"iban": "NL91ABNA0417164300",
"bankAccount": "041716430",
"bic": "ABNANL2A",
"notes": "",
"debtorId": "CONT-54321",
"login": "sbakker",
"gender": "F",
"mobile": "+31 6 8765 4321",
"expires": "2024-12-31T23:59:59.999Z",
"externalId": "EXT-54321",
"dateOfBirth": "1990-03-21T00:00:00.000Z",
"mailingList": "Y",
"createdAt": "2023-02-15T09:30:00.000Z",
"lastModifiedAt": "2023-07-01T14:45:00.000Z",
"company": {
"id": 9876,
"name": "Acme Corp B.V.",
"taxNumber": "NL123456789B01",
"cocNumber": "12345678",
"debtorId": "COMP-9876",
"phone": "+31 20 987 6543",
"email": "info@acme.nl",
"notes": "",
"path": "/companies/acme-corp",
"slug": "acme-corp",
"tag": "wholesale",
"createdAt": "2022-01-01T00:00:00.000Z",
"lastModifiedAt": "2023-06-30T12:00:00.000Z",
"parentUsergroupId": 1000
},
"companies": [
{
"id": 9876,
"name": "Acme Corp B.V.",
"taxNumber": "NL123456789B01",
"cocNumber": "12345678",
"debtorId": "COMP-9876",
"phone": "+31 20 987 6543",
"email": "info@acme.nl",
"notes": "",
"path": "/companies/acme-corp",
"slug": "acme-corp",
"tag": "wholesale",
"createdAt": "2022-01-01T00:00:00.000Z",
"lastModifiedAt": "2023-06-30T12:00:00.000Z",
"parentUsergroupId": 1000
},
{
"id": 5432,
"name": "Merford Cabins B.V.",
"taxNumber": "NL987654321B02",
"cocNumber": "87654321",
"debtorId": "COMP-5432",
"phone": "+31 30 123 4567",
"email": "info@merford.nl",
"notes": "",
"path": "/companies/merford-cabins",
"slug": "merford-cabins",
"tag": "manufacturing",
"createdAt": "2021-06-15T00:00:00.000Z",
"lastModifiedAt": "2023-05-20T10:30:00.000Z",
"parentUsergroupId": 2000
}
],
"channelId": 3,
"language": "NL"
}
}

Customer

{
"customer": {
"tenant": "acme",
"id": 12345,
"debtorId": "CUST-12345",
"gender": "M",
"firstName": "Jan",
"middleName": "de",
"lastName": "Vries",
"phone": "+31 20 123 4567",
"mobile": "+31 6 9876 5432",
"email": "jan@acme.nl",
"login": "jdevries",
"iban": "NL91ABNA0417164300",
"bankAccount": "123456789",
"bic": "ABNANL2A",
"notes": "",
"primaryLanguage": "NL",
"expires": "2025-12-31T23:59:59.999Z",
"externalId": "EXT-12345",
"dateOfBirth": "1985-06-15T00:00:00.000Z",
"mailingList": "Y",
"isLoggedIn": true,
"createdAt": "2023-01-01T10:00:00.000Z",
"lastModifiedAt": "2023-06-30T15:30:00.000Z",
"parentUsergroupId": 5,
"channelId": 2,
"language": "NL"
}
}

PasswordReset

{
"passwordReset": {
"email": "jan@acme.nl",
"resetLink": "https://www.acme.nl/reset-password",
"language": "NL"
}
}

Webhook security

Two security methods are available for verifying webhook requests.

HMAC signature verification

Propeller generates an HMAC-SHA256 signature using a secret salt that you configure. The signature is included in the X-Propeller-Signature header:

X-Propeller-Signature: sha256=<signature>

Your endpoint should compute the HMAC-SHA256 of the raw request body using the same secret and compare it against the header value to verify the request is authentic.

Basic authentication

Propeller sends a username and password with each webhook request using HTTP Basic Authentication:

Authorization: Basic <base64-encoded credentials>

Both username and password must be provided together. The password is stored securely and is not displayed after saving.