QuillJet

What syncs where

When a Webflow event fires, QuillJet builds one contact from it and pushes that contact into your email tool. This page shows exactly what goes into that contact: where the email comes from, where the name comes from, how order details get in, and how your own field mappings fit in.

The contact QuillJet builds

Every sync produces one contact made of:

  • An email address (required: no email means nothing is synced).
  • A first and last name when QuillJet can find or derive one.
  • Fields: whatever you map yourself, plus any constants.
  • Tags from the rule.

That contact is then upserted into the list or audience your sync rule points to. See subscribers and contacts for what it looks like once it lands.

Where the email comes from

QuillJet looks for the email in the known locations for each Webflow trigger type first: the order customer's email on ecommerce orders, and common email fields on form submissions and CMS items. If none of those match (Webflow form fields can use any label), QuillJet scans the event's values and takes the first email-shaped string it finds.

If no email can be found anywhere in the event, the delivery is marked skipped with no_email_in_payload. Nothing is sent, and the miss is visible in the event log. Inventory events never carry a customer email, so they never create a contact.

Where the name comes from

QuillJet resolves the name in this order:

  1. Explicit first and last fields. QuillJet recognizes name fields in several languages (for example firstname, voornaam, prenom for the first name, and lastname, achternaam, nom for the last name).
  2. A known full-name field, such as the order's customer full name, split into first and last.
  3. A scan for a name-ish field (name, fullname, naam, and similar), also split into first and last.

When only a single name value is available, QuillJet splits it: the first word becomes the first name and the rest becomes the last name. If nothing name-like exists, the contact simply has no name, which is fine.

Order details are mapped by you

QuillJet does not add order fields on its own. Strict email tools (Mailchimp merge fields, Brevo attributes) reject a contact that carries a field the audience does not have, so an automatic order field would fail every delivery until you created it. Instead, map the order details you want to a field that exists in your tool:

  • orderId to a field such as ORDER_ID
  • customerPaid.value (or netAmount.value) to a field such as ORDER_TOTAL

The source picker lists these paths for order rules even before your first order arrives.

The field-by-field map

This table shows the standard sources QuillJet reads and what each becomes on the contact. Form and CMS fields use whatever labels your site uses, so those you map yourself in the rule editor.

Webflow source path What it becomes on the contact
customerInfo.email The contact's email (matched, deduplicated)
customerInfo.fullName Split into first name and last name
orderId Whatever target field you map it to (for example ORDER_ID)
customerPaid.value or netAmount.value Whatever target field you map it to (for example ORDER_TOTAL)
Form fields under data.* Whatever target field you map them to
CMS fields under fieldData.* Whatever target field you map them to

Tip: Constants always win over a mapped value for the same target. Use a constant for fixed values such as a source label.

Form submissions and CMS items

Ecommerce orders have a predictable shape, but form submissions and CMS items do not: their fields carry whatever labels you gave them in Webflow. QuillJet still finds the email and name using the recognition and scanning described above, and everything else is up to your mappings.

In the rule editor, the source picker lists the actual fields from a real event so you can point each one at the right merge field, attribute, or custom field in your email tool. Add conditions if you only want some submissions or items to sync (for example, only orders above a certain total). Webflow's API reference describes order amounts such as customerPaid.value as the value "in the base unit of the currency" (developers.webflow.com, read 2026-10-30), so open a real order in the event log to see the exact number before you map or filter on it.