ActivePieces Integration
Use WinFactor events in ActivePieces to notify teams and update external tools
ActivePieces lets organization users turn WinFactor events into practical automations.
Typical uses:
- notify sales when a new submission arrives
- alert the team when a quote is viewed or accepted
- create or update records in a CRM
- send follow-up messages to Slack, Teams, email, or spreadsheets
What WinFactor Sends
WinFactor sends ten event types:
submission.createdquote.createdquote.sentquote.viewedquote.acceptedquote.rejectedquote.expiring_soonquote.expiredlead.createdpricing.calculated— the live pricing hook (see below)
Live price adjustments (Deep API & Events)
pricing.calculated fires while a customer is configuring and carries the full
configuration, WinFactor's base line items, and a callback URL. Your flow can
compute its own pricing and PUT an adjusted breakdown back — the customer's
screen updates in real time, and the final quote uses your prices.
Follow the step-by-step ActivePieces pricing recipe, and see Configuration sessions for the full contract. Deliveries can be verified with webhook signatures.
Recommended first workflow
Start with submission.created. It gives the fastest operational value and is the easiest way to test that the connection works.
Example Slack message:
New submission received
Customer: {{ trigger['body']['data']['customer']['name'] }}
Template: {{ trigger['body']['data']['template']['name'] }}
Size: {{ trigger['body']['data']['configuration']['width'] }} x {{ trigger['body']['data']['configuration']['height'] }} mmCommon payload structure
Every event includes:
versioneventTypetimestamporgLocalecustomerLocalewhen relevantorganizationdata
Example submission.created payload
{
"version": "1.0",
"eventType": "submission.created",
"timestamp": 1704556800000,
"orgLocale": "nl",
"customerLocale": "en",
"organization": {
"id": "abc123",
"name": "Window & Door Solutions Inc.",
"slug": "window-door-solutions",
"email": "[email protected]",
"phone": "+31201234567",
"logoUrl": "https://storage.example.com/logo.png"
},
"data": {
"submission": {
"id": "sub_456xyz",
"createdAt": 1704556800000
},
"customer": {
"name": "John Smith",
"email": "[email protected]",
"phone": "+31612345678",
"companyName": null
},
"template": {
"id": "template_789",
"name": "Modern Glass Panel",
"slug": "modern-glass-facade"
},
"configuration": {
"width": 5000,
"height": 3000,
"componentCount": 12
},
"urls": {
"submissionDetail": "https://app.winfactor.com/submissions/sub_456xyz"
}
}
}Example quote.accepted payload
{
"version": "1.0",
"eventType": "quote.accepted",
"timestamp": 1710768000000,
"orgLocale": "nl",
"customerLocale": "en",
"organization": {
"id": "org_123abc",
"name": "Window & Door Solutions Inc.",
"slug": "",
"email": "[email protected]",
"phone": "+31201234567",
"logoUrl": "https://storage.example.com/logo.png"
},
"data": {
"quote": {
"id": "quote_xyz789",
"number": "Q-2026-0042",
"version": 1,
"total": 1250.00,
"currency": "EUR",
"currencySymbol": "€"
},
"customer": {
"name": "John Smith",
"email": "[email protected]",
"phone": "+31612345678",
"companyName": null
},
"acceptance": {
"acceptedAt": 1710768000000,
"acceptedByName": "John Smith",
"ipAddress": "192.168.1.100",
"userAgent": "Mozilla/5.0 ..."
},
"urls": {
"quoteDetail": "",
"submissionDetail": ""
}
}
}Example lead.created payload
{
"version": "1.0",
"eventType": "lead.created",
"timestamp": 1710768000000,
"orgLocale": "nl",
"customerLocale": "nl",
"organization": {
"id": "org_123abc",
"name": "Window & Door Solutions Inc.",
"slug": "",
"email": "[email protected]",
"phone": "+31201234567",
"logoUrl": null
},
"data": {
"lead": {
"id": "lead_abc123xyz",
"createdAt": 1710768000000
},
"contact": {
"name": "Jane Smith",
"email": "[email protected]",
"phone": "+31612345678",
"message": "I am interested in custom sliding doors for my showroom. Can you provide a quote?",
"messagePreview": "I am interested in custom sliding doors for my showroom. Can you provide..."
},
"urls": {
"leadsPage": ""
}
}
}Useful fields
| Field | Use |
|---|---|
data.customer.name | sales or CRM lead creation |
data.customer.email | follow-up and ownership |
data.template.name | routing by product type |
data.configuration.width | operational context |
data.configuration.height | operational context |
data.configuration.componentCount | complexity indicator |
data.urls.submissionDetail | direct link into WinFactor |
Best practices
- start with one event and one action
- keep message text simple until you trust the payload
- use direct WinFactor URLs in your notifications
- route
quote.acceptedandquote.rejectedto people who can act on them immediately - document your own workflow names so staff know which automations are active
Known limitations to account for
quote.createdis internal; customers have not seen the quote yet- some integrations require external infrastructure outside WinFactor
- if your team depends on WhatsApp delivery, validate that workflow separately before you rely on it operationally