After purchase
When a line is fulfilled, Contracts fills the mapped template and writes a PDF.
- With the player:
beatstore_order_line_fulfilled - Without the player: EDD
edd_complete_purchase, or WooCommerceprocessing/completed
The write is idempotent on order_ref + commerce_ref. A second hook fire does not create a second file.
Where the file lives
New PDFs are private: uploads/beatstore-contracts/private/. The filename is a hash of the order and commerce refs. Download is ?beatstore_contract={token}, not a public URL.
Old agreement-pdfs/ files from Licenses & Contracts stay where they are. They are not moved.
Receipts can include token links. EDD uses the {contract_list} email tag. WooCommerce appends the same list after the order table. Turn that on under contract settings (email in receipt).
Buyers can also open the token link from the order/receipt screen when the list is printed there.
No template mapped
If the offer has no template, or the template is disabled / empty HTML, fulfillment skips that line. The sale and the buyer files still go through EDD or Woo.