Integrations · Clay
Direct mail as a step in your Clay table.
One HTTP API column enrolls each row into an always-on campaign. Mailyard finds and verifies the business address, mails the letter and reports back to the row.
What happens to a row
Enroll once. Mailyard handles the rest.
Set up the letter, proofs and funding once. The campaign then takes leads one at a time, like a sequencer.
01 · Scout
Research
Finds the company office closest to the contact's city.
02 · Proof
Verify
USPS CASS check. Anything unconfirmed is held with a reason.
03 · Gate
Schedule
Books the next send window, 24+ hours out, from your balance.
04
Mail
The letter prints with the contact's own QR code.
05 · Echo
Report
Status and delivery changes go back to your table by webhook.
Two ways to send rows.
Mail every new lead automatically.
Rows enroll into an approved campaign. Each letter is scheduled 24+ hours ahead and cancelable until it prints.
POST /api/v1/campaigns/{label}/enrollmentsFind addresses now, mail when you're ready.
Rows join a lead list in Leads. Attach it to any campaign later at no new research cost.
POST /api/v1/lead-lists/{id}/contactsInputs
Which Clay fields help.
Set "inputFormat": "clay" and send people-search fields in Clay's own shape.
| Field | Clay key | Needed? | Why it helps |
|---|---|---|---|
| Contact ID | contactId | Required | Enrollment is idempotent on it, and results and scans carry it back. |
| First and last name | First Name, Last Name | Required for enrollment | Prints on the envelope and greeting. |
| Work email | One identity field | Its domain names the company when there's no profile. | |
| LinkedIn profile URL | Social Urls → Linkedin | One identity field | Confirms the current employer. |
| Company name and domain | Matched Experience → Company | Strongly recommended | Anchors research to the right organization. |
| City and state | Structured Location | Strongly recommended | Picks the nearest office over headquarters. |
US contacts only. A role with an end date is refused as a former employer. Letter fields go in fields under the campaign's names.
The column
What goes in the HTTP API column.
POST https://app.mailyard.ai/api/v1/campaigns/q4-reopen/enrollments # Header, sent by a Clay connection, never typed into the column Authorization: Bearer myk_your_api_key Content-Type: application/json { "contactId": "/Contact ID", "inputFormat": "clay", "First Name": "/First Name", "Last Name": "/Last Name", "Email": "/Work Email", "Social Urls": { "Linkedin": "/LinkedIn Profile" }, "Matched Experience": { "Company": { "Name": "/Company Name", "Domain": "/Company Domain" } }, "Structured Location": { "City": "/City", "State Or Province": "/State", "Country Iso": "/Country ISO" } }
Column settings
- Keep the key in an HTTP API (Headers) connection
- Turn on remove empty values
- Run only when Contact ID and a company or LinkedIn URL exist
- About 5 requests a second (the limit is 10 per key)
Field paths to return
status, reasons, address.line1, address.city, address.state, scheduledFor, scan.scanUrl
Back into the table
Every status comes back to the row.
Point a flat-format enrollment.updated webhook at a Clay Monitor webhook and dedupe on Contact ID. The keys stay the same at each stage, so one column mapping holds.
- The address used, with USPS detail and sources
- Send window, cancel deadline, delivery stage and scans
Setup
Set it up in ten steps.
In Mailyard
- Create an always-on campaign with a letter and a USPS-verified return address.
- Approve the proofs, rendered at the longest values your letter allows.
- Fund the balance under Settings → Billing.
- Activate it and copy its label, such as
q4-reopen. - Create an API key under Settings → API keys.
In Clay
- Add an HTTP API (Headers) connection:
Authorization,Bearerplus your key. - Add an HTTP API column: POST, the enrollment URL and the body above.
- Run it on one row. A
201withqueuedmeans it's in. - Add a Monitor webhook with auto-dedupe on Contact ID, and add its URL under Settings → Webhooks (flat format).
- Send a test event, map columns and run the table.
Automatic, inside limits you set.
Nothing prints unapproved
Edit the letter and printing waits for new proofs.
24 hours and a review
Each letter waits a day, and Mailyard's team reviews campaigns during the beta.
Spend stays capped
When the prepaid balance runs short, leads wait as held.
Suppression first
Suppressed people are held at intake, before research.
Questions
More in the full FAQ →
Do I need addresses in my Clay table?
No. A work email, LinkedIn profile URL or company is enough. If a row has a mailing address, send it in address to skip research. USPS verification still runs.
Will running the column twice mail someone twice?
No. Enrollment is idempotent on the campaign and Contact ID, so a rerun returns 200 with the current state.
What does a letter cost when it's enrolled from Clay?
The campaign's per-letter price, fixed when the piece is scheduled and drawn from your prepaid balance. Research uses a credit only for a verified, mailable address. See pricing.
Is Mailyard a native Clay integration?
It works through Clay's HTTP API column. There's no Mailyard action in Clay's list yet, so you set up the column once with the URL, a key connection and a JSON body.
Related
Bring lists from Clay, HubSpot, Salesforce, Apollo or any CSV. Enroll leads through the API and get scans back by webhook.
API and webhooksA REST API for address research, lead lists, enrollments, QR codes and scans, with signed webhooks for every result.
Finding verified mailing addressesTurn emails and LinkedIn profiles into verified business mailing addresses, with the sources behind each one. Pay only for mailable results.
Mail analyticsTrack each letter from printing to delivery, give each contact a QR code, and see who scanned, when and on what device.
Add a letter to your Clay workflow.
Set up an always-on campaign once, then add rows as they arrive.