Full Answer
A good Events API payload is built in three layers, and skimping on any one weakens the others. The event layer establishes what happened and when: a recognised event name, a server-generated event_id that you also pass to the Pixel for deduplication, and an accurate event timestamp. Get the event name wrong and TikTok can't map it to an optimisation goal.
The user layer is where match quality is won or lost. Provide as many identifiers as you legitimately hold: SHA-256 hashed email and phone, the client IP address and user agent, and ttclid, the TikTok click identifier you should capture at the first server request before any stripping. TikTok matches the conversion to a user by combining these, so a purchase sent with email plus phone plus ttclid matches far more often than one sent with email alone. Hash all personal data server-side; never transmit it in clear text.
The properties layer makes the event useful for value-based optimisation: the monetary value, the currency code, and the contents array describing the products. For a WooCommerce purchase these map directly from the order. Keep currency explicit rather than assumed, and ensure value reflects the figure you actually want TikTok to optimise toward. Accurate, richly matched events are what turn server-side tracking from a compliance checkbox into a genuine bidding advantage.