Help Center · Integrations · Send boxes from Clay

Send boxes from Clay

An HTTP API column in any Clay table fires a personalized box per enriched row.

Any Clay table can ship boxes. Add an HTTP API column and each enriched row fires a Boxli send — recipient, box design, tracked landing pages, and handwritten note all mapped from your columns.

1
Get your API key
Your workspace has a private API key (starts with bxli_) in Settings → Integrations. Treat it like a password — it authorizes sends against your inventory.
2
Add an HTTP API column in Clay
In your table: Add enrichment → HTTP API. Method POST, endpoint https://app.sendaboxli.com/api/integrations/clay/send, and an Authorization header of Bearer YOUR_API_KEY.
3
Map the body from your columns
JSON body using Clay column variables. Required: first_name and last_name (or a single name), a full shipping address (address_line_1, city, state, zip), and landing_page_url — use a unique URL per row so every scan tracks back to its recipient.
4
Pass an external_id
Strongly recommended: map Clay’s row ID to external_id. Re-running the column then never double-ships — a repeat returns the original send instead of creating another.
5
Run it and check responses
A new send returns 201 with the send and contact IDs. A repeat external_id returns 200 with idempotent: true. 400 means a missing field or undeliverable address, 401 a bad key, 409 that the design is out of stock.
Example body
{
  "first_name": "{{First Name}}",
  "last_name": "{{Last Name}}",
  "email": "{{Email}}",
  "company": "{{Company}}",
  "address_line_1": "{{Street}}",
  "city": "{{City}}",
  "state": "{{State}}",
  "zip": "{{Zip}}",
  "box_type_name": "ABM top target",
  "landing_page_url": "https://yoursite.com/welcome/{{Email}}",
  "message": "Hi {{First Name}} — loved your post.",
  "external_id": "{{Clay Row ID}}"
}

Clay’s own address enrichments map straight across: address_line to address_line_1, locality to city, admin_district to state, postal_code to zip. For a company that is the HQ or office address; Clay cannot supply home addresses. Optional fields worth knowing: box_type_name picks the design (required if you run several), message adds handwritten-note text, booking_url adds a second tracked QR, campaign_id groups sends, and email lets Boxli upsert the contact rather than duplicate it.

On each send, Boxli upserts the contact, pulls a box from inventory, generates the tracked QR and NFC codes, and queues pick-pack-ship. Delivery and engagement then stream back like any other send.

Related articles

In the app

Do it where the work happens

Every guide here lives in the in-app Help Center too — open Help in the sidebar.

Open Boxli