# Cadlyx QuotePrep integration guide

Use your quote data in the tools you already use. Tell the Integration Assistant what you need, or share this guide with your engineer or AI. Save a separate integration for each destination.

You can download CSV, JSON, or Excel files, or send approved JSON to an HTTPS endpoint. There are no native ERP, CRM, or accounting connections. Your receiving system handles the import and any actions it needs to take.

## Start with the outcome

Open **Settings > Integrations** and describe what you want. For example:

> Build a JSON export for our order intake service with quote_id, job_ref, part, and total. Use the quote identifier, job reference, part name, and quoted total. Leave out customer contacts and internal costs. Show me the result before I approve it.

Each integration has its own saved conversation. Start a new chat for a different destination, or reopen an integration to continue where you left off. Your messages, tested previews and approval history stay with that integration when you reload or switch chats.

Describe the fields you need, then choose a finalized quote in the conversation when the assistant needs an example. You can also attach a sample CSV, JSON, XLSX, text file, or API specification up to 2 MB. Leave credentials out of chats and samples.

Ask the assistant to build, test or revise the export in your own words. It asks for missing details and shows the tested output in the conversation. For JSON, it can write and test a draft-07 output JSON Schema too. If you supply a schema, that remains the one it must follow. Review the preview and any missing requirements, then reply with changes or use the approval card beside the result. A message from the assistant never approves a mapping or sends data. The assistant must not guess missing currencies, materials, units, or business identifiers.

Approval saves the format for reuse. It does not approve delivery. Automatic file generation and automatic delivery are separate choices. Asking for a revision creates a new proposal; an existing approved integration keeps working until you approve its replacement or revoke it. Approving a replacement stops the previous version's automatic files and deliveries.

## Data your integration can use

Exports use a saved copy of a finalized quote, not an editable draft. The current format is **ExportSource 1.0**. The source preview shows what is available for your selected quote.

- [Download the source JSON Schema](/schemas/export-source-v1.json).
- [Download a complete synthetic buyer source](/docs/examples/quote-source.json).
- [Download the four-field destination schema](/docs/examples/quote-payload.schema.json).

| Source path | Meaning |
| --- | --- |
| `identity.quoteId` | Finalized quote version identifier |
| `identity.jobRef` | Job reference |
| `identity.partName` | Part name |
| `identity.revisionId`, `identity.versionNumber` | Part revision and finalized quote version |
| `quote.totalPrice` | Quoted total price |
| `quote.currency` | Not currently supplied; null |
| `quote.quantityBreaks` | Available quantity tiers and selling prices |
| `quote.customer` | Buyer contact fields when present; some may be null |
| `lineItems` | Buyer-facing descriptions, quantities, and selling prices |
| `process` | Process details when available |
| `artifacts` | Generated file IDs and types, not public download links |
| `missingFields` | Unavailable source fields; only a blocker if your destination needs them |

Buyer-safe exports leave out the internal `manufacturing` data. Internal exports include the manufacturing fields shown in the selected source preview, such as saved costs, routing, and operations. The public schema currently describes manufacturing as an object rather than a complete field contract. Use the exact approved preview to define an internal importer; do not assume that margin or material fields exist. An authorized user must review and approve the exact internal source before it goes to the assistant, then approve the export separately. Sending an internal payload also needs its own preview and destination approval. Keep these exports out of buyer files and ShareView.

Null means a value is unavailable, not zero. Currency is not currently verified in the export source. Do not assume USD from a dollar symbol or an alloy from a part name. If your destination requires a value that is missing, resolve that requirement before approval.

## Example: four-field JSON

These values are synthetic. Adapt the fields to your destination; they are not a standard ERP format.

```json
{
  "quote_id": "11111111-1111-4111-8111-111111111111",
  "job_ref": "EXAMPLE-QUOTE-001",
  "part": "Example bracket.step",
  "total": 250
}
```

The source fields are `identity.quoteId`, `identity.jobRef`, `identity.partName`, and `quote.totalPrice`. For CSV, give the column names, order, and any date or number rules. An Excel sample helps describe the columns and values you need.

CSV and XLSX exports contain flat rows with scalar cells, up to 10,000 rows and 200 columns. XLSX creates one sheet named `Export`. It does not preserve workbook formatting, formulas, arbitrary cell positions, or multiple sheets. Your engineer or AI can add that processing outside Cadlyx. Downloading an Excel file does not upload it to an ERP.

CSV strings beginning with =, +, -, or @ receive a leading apostrophe to prevent spreadsheet formula execution. This changes the exported string, including negative-looking numbers stored as text. JSON and XLSX preserve string values; XLSX string cells are not formulas.

Try a few representative quotes, including missing optional values, multiple items, different quantities, and revisions. A successful preview confirms the transformation and its validation. It does not prove that another system will accept the result.

## Deliver JSON to your endpoint

Direct delivery needs an approved JSON export with an output JSON Schema. Open its **Files and delivery** area to set it up:

1. Enter a public HTTPS endpoint on port 443. Private or local addresses, credentials in the URL, query strings, and fragments are not supported.
2. Choose provider signature, bearer token, or API-key header authentication. Enter credentials here, never in chat or sample files.
3. Preview the delivery for your selected quote. Check the exact POST body and destination URL.
4. Approve the destination and payload, then send it. Automatic delivery of future finalized quotes needs separate approval.
5. Check delivery history. Queued or handed off does not mean received. An HTTP success confirms transport, not that your ERP or accounting action finished. Failed deliveries can be retried from delivery history after correcting the problem.

Requests use `Content-Type: application/json`. The mapped body is limited to 512,000 UTF-8 bytes. `Idempotency-Key` and `X-Cadlyx-Push-Id` contain the same push job identifier. Retries can repeat that identifier; separate sends can have different identifiers. Your receiver should also use a business key if a quote version must create only one external record.

Authenticate requests, enforce a body-size limit, and validate the agreed schema. Save the identifier and accepted work durably before returning success. Use a unique constraint or another atomic check to avoid doing the same work twice. If saving fails, return an error. Delivery can repeat; it is not exactly once.

Bearer and API-key authentication give your receiver an explicit credential to check. For provider signatures, match the signing configuration for your destination. The generic webhook signature described below does not necessarily apply to direct JSON delivery. Keep credentials and sensitive quote bodies out of logs.

Changing a destination requires a new preview and approval. Revoking stops future automatic pushes and retires the provider connection. Check for a pending provider pause; a request already in flight can still arrive.

## Generic event webhooks

**Settings > Webhooks** is separate from direct JSON delivery. Available events are `quote.won`, `quote.lost`, and `export.ready`. Each event includes its ID, type, schema version, time, and event data. `export.ready` contains file metadata, not internal quote data or a public download link.

Generic webhooks use `X-Cadlyx-Signature`. Get the signing secret through authorized webhook settings and follow [the delivery signature reference](https://hookdeck.com/docs/authentication). Generic Cadlyx webhooks use custom signing; direct pushes may use provider-default signing or your bearer/API key. Match the header, secret, and signing mode to your configuration.

Use event `id` to recognize a repeated delivery, along with your own business-level duplicate checks. A `quote.finalized` subscription is not currently available.

## Give this to your engineer or AI

Share this brief, the source schema, a redacted export, and your destination requirements:

```text
Build an importer for Cadlyx QuotePrep quote exports using the attached schema,
example, and destination requirements. Use the supplied fields. Keep quoteId,
revisionId, and versionNumber so we can trace each record to its quote.
Reject missing required values rather than guessing. Do not assume currency
or units. Keep internal manufacturing data out of buyer-facing output.

For JSON delivery, check authentication and validate the agreed schema.
Save the receipt and work atomically before returning success. Deduplicate the
push job identifier, and use quote/version plus our business key to prevent
separate sends from creating duplicate records. Test repeated requests, bad
credentials, invalid data, and failed persistence.

Explain how an authorized Cadlyx user sets up, previews, and approves the export
and delivery. Do not assume native OAuth or developer API keys are available.
Ask for our API specification or import template if you need it.
```

This guide, schema, and examples are public. Your shop's quotes, integrations, approvals, and delivery settings require organization access. There is no general public quote API, API-key signup, native account connection, or two-way sync. Start with files your shop exports or JSON approved for your destination.

Guide version: 1.0. Updated 2026-10-28.
