Send Shipping Details Email
POST/api/amazon/:integrationInstance/draft-inbound-plans/:draft_inbound_plan/fulfillment/shipping-details-email
Stage 2 of the fulfillment send: email the shipping instructions and carrier paperwork that only exist once the box contents are in and transport is confirmed — the box labels, pallet labels, packing list and bill of lading. The initial invitation promises this follow-up; this endpoint is what delivers it.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Resolves the same 3PL/supplier recipient as the initial email, substitutes the email tokens — {{reference}}, {{portal_link}}, {{instructions}}, and the per-shipment {{shipment_id}}, {{ship_to}}, {{ship_from}}, {{carrier}}, {{method}}, {{notes}} and {{attachments_list}}, attaches the selected documents, marks the later-stage documents Sent, and delivers the mail (CC honoured). Returns the updated fulfillment packet.
Check can_send_shipping_details on the packet before offering this action: it is true only once the order has been sent AND at least one later-stage document has left the pending state. Calling it earlier returns 422 shipping_details_unavailable.
The subject/body default to the tenant-overridable shipping-details template returned as email_shipping_details_template; the initial invitation uses a separate template.
Body: subject (required, max 255), body (required HTML string), cc (optional array of email addresses).
Attachment flags (all boolean, optional, default true). Each is honoured only when the document actually exists — the matching email_will_attach_* flag on the packet tells you which are available, so the compose dialog never offers an attachment that cannot be produced:
attach_fnsku_labels— FNSKU item-label PDF. When no durable label file exists yet, labels are generated at send time for every seller-labelled item at its plan quantity (best-effort — a generation failure never blocks the email).attach_prep_sheet— prep & pack sheet (XLSX): unit mix, prep requirements and kitting instructions.attach_packing_list— packing list (XLSX): every box with its unit mix, dimensions and weight. Available once box contents are known.attach_box_labels— Amazon box labels (PDF), one per box. Available once generated.attach_pallet_labels— Amazon pallet labels (PDF), four per pallet. Freight shipments only.attach_bol— bill of lading (PDF). Freight shipments only, issued close to the pickup date.
from_mode (string, optional, one of merchant or system): which sender identity to send as for this one email. merchant uses the store's own address (requires SPF/DKIM on that domain); system uses the always-deliverable system identity. Defaults to the packet's email_from_default_mode.
When the plan has more than one confirmed shipment, one email is sent PER shipment: each subject carries that shipment's confirmation ID, the instructions describe that shipment's carrier, method and destination, and the attachments (box labels, pallet labels, bill of lading, packing list) are that shipment's own. Freight-only paperwork is never attached to a small-parcel shipment's email. The per-shipment tokens — {{shipment_id}}, {{ship_to}}, {{ship_from}}, {{carrier}}, {{method}}, {{notes}} (labelling requirements + SPD/freight specifics) and {{attachments_list}} (the names of the files attached to that email) — resolve against each shipment individually, so a token-based template produces a fully shipment-specific email. When the subject does not already contain the shipment confirmation ID, it is suffixed automatically.
Warnings: when a selected attachment cannot be produced (for example the stored label file is no longer retrievable), the email still sends and the response carries a warnings object listing exactly what was left off — regenerate the label and resend.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.