Segment logo

Send order details as an Order Placed event

Each custom order submission emits an "Order Placed" event with product and quantity properties, feeding the warehouse without a developer.

When this happens

New Submission on your "Place an order" form

Do this

Create an "Order Placed" track event in Segment with product, quantity, and revenue properties

One-directional. A submission triggers the action — nothing is written back into your form.

Custom orders taken through a form rarely reach the analytics stack. The order sits in a submissions list, and revenue reporting happens in a spreadsheet a week later. Small shops selling made-to-order items run into this constantly.

An "Order Placed" track event closes the gap. Each submission sends the product, the quantity and the variant to Segment the moment it arrives, so the warehouse and the revenue dashboard see custom orders on the same footing as anything sold through the storefront.

Setting it up

  1. 1

    Publish the Product Order Form. Add products and priced options, then connect Stripe, PayPal, or Square for secure hosted checkout.

  2. 2

    In Zapier, watch that order form with the New Submission trigger and load a sample order so the product and quantity fields are available downstream.

  3. 3

    Add Segment as the action app, choose Create Track Event, and name the event Order Placed to match the name Segment's e-commerce destinations already expect.

  4. 4

    Map Email Address to the userId, so orders from a returning customer stack on one profile rather than scattering across anonymous IDs.

  5. 5

    Send Item Name or Product as the product property and Quantity as quantity. Keep the property names lowercase and stable — renaming them later splits your historical reporting in two.

  6. 6

    Decide how revenue gets set. The form does not collect a price, so either type the unit price into a Zapier formatter step and multiply by Quantity, or leave revenue off the event and join to the price list in the warehouse.

  7. 7

    Add Color, Variant, or Size as a variant property and Delivery Method as shipping_method, which gives fulfilment reporting something to group by.

  8. 8

    Place a test order, confirm the event and its properties land in the Segment source debugger, then turn the Zap on.

What maps where

Using the Product Order Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.

Form fieldSegment
Email AddressuserId on the Order Placed event
Full Namename trait, if you chain an identify call before the track event
Item Name or Productproduct property
Quantityquantity property
Color, Variant, or Sizevariant property
Delivery Methodshipping_method property

Variations worth knowing

Split delivery and collection into separate flows

Add a Zapier filter on Delivery Method and run two branches. Delivery orders carry the shipping address through to your fulfilment destination; collection orders skip it entirely. Both still emit Order Placed, so the revenue total stays whole while the operational routing differs.

Fire a second event when the order is confirmed

Order Placed says a customer asked for something. Once you have taken payment in your existing billing tool, have that tool send an Order Completed event to the same Segment source under the same userId. The gap between the two is your drop-off rate on custom orders.

If something isn't arriving

Revenue shows as zero across every Order Placed event.

The revenue property is mapped to a form field that does not exist — the order form captures the order, not the price. Set revenue in a Zapier step from your price list, or drop the property and calculate it in the warehouse.

Quantity arrives in Segment as text, so sums fail in the warehouse.

Numbers coming out of a form field are strings by default. Add a Zapier formatter step to convert Quantity to a number before the Segment action, and downstream aggregation starts working.

Frequently asked questions

Can the form take payment before the Order Placed event fires?

Yes. Add products and priced options to the form, then collect payment through secure hosted checkout with Stripe, PayPal, or Square. Payment status is tracked alongside the response.

How do I set the revenue property when the form has no price field?

Two options work. Add a Zapier formatter step that multiplies Quantity by a unit price you maintain in the Zap, or send the event without revenue and join Item Name or Product to your price table in the warehouse.

Should each item on an order be its own event?

Keep one Order Placed event per submission. The order form captures a single product line, so one event per order keeps the count of orders honest. Multi-line orders are better modelled as a products array on the one event.

Related automations

Build the form first

The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.

Start free