WinFactor Docs

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.created
  • quote.created
  • quote.sent
  • quote.viewed
  • quote.accepted
  • quote.rejected
  • quote.expiring_soon
  • quote.expired
  • lead.created
  • pricing.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.

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'] }} mm

Common payload structure

Every event includes:

  • version
  • eventType
  • timestamp
  • orgLocale
  • customerLocale when relevant
  • organization
  • data

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

FieldUse
data.customer.namesales or CRM lead creation
data.customer.emailfollow-up and ownership
data.template.namerouting by product type
data.configuration.widthoperational context
data.configuration.heightoperational context
data.configuration.componentCountcomplexity indicator
data.urls.submissionDetaildirect 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.accepted and quote.rejected to 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.created is 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

Next Steps

On this page