Send a handwritten card from an Attio workflow

When a company or person lands on your customers list in Attio, mail them a card written with a real pen. One Send HTTP request block calls the notecardHQ API directly. There is no notecardHQ app to install.

What you need

  • Attio workflows. Attio's block library is available on all plans (source).
  • A trigger. Record added to list starts when a record is added to a list you choose; Attribute value changed starts when an attribute is set or changed (source).
  • A record that holds a mailing address, and a notecardHQ API key, test key first.

The Send HTTP request block

Attio's Send HTTP request block supports POST, takes header and value pairs that can mix fixed text with variables from earlier steps, and needs a Content-Type header when it sends a body (source). That is everything notecardHQ needs, so no relay step is required.

  • Method: POST. URL: https://you.notecardhq.com/api/v1/notes.
  • Header Authorization: Bearer YOUR_API_KEY.
  • Header Idempotency-Key: the text attio:customer: followed by the trigger record's ID variable.
  • Header Content-Type: application/json.
  • Body, with the {{...}} entries replaced by variables from the trigger:
{
  "externalId": "{{record ID}}",
  "recipient": {
    "firstName": "{{first name}}",
    "lastName": "{{last name}}",
    "businessName": "{{company name}}",
    "address1": "{{street address}}",
    "city": "{{city}}",
    "state": "{{state}}",
    "postalCode": "{{postal code}}",
    "country": "{{two-letter country code}}"
  },
  "content": "Hi {{first name}},\n\nWelcome, and thank you for choosing us.\n\nThe team"
}

The request it sends

POST https://you.notecardhq.com/api/v1/notes
Authorization: Bearer mos_test_...
Content-Type: application/json
Idempotency-Key: attio:customer:bf071e1f-6035-429d-b874-d83ea64ea13b

{
  "externalId": "bf071e1f-6035-429d-b874-d83ea64ea13b",
  "recipient": {
    "firstName": "Sam", "lastName": "Lee", "businessName": "Acme",
    "address1": "123 Main St", "city": "Austin",
    "state": "TX", "postalCode": "78701", "country": "US"
  },
  "content": "Hi Sam,\n\nWelcome, and thank you for choosing us.\n\nThe team"
}

A stable Idempotency-Key

The key is the event name plus the record ID: attio:customer:bf071e1f-.... If the record leaves the list and is added again, or the workflow runs twice, notecardHQ returns the original note instead of writing a second card. To send a card each time a different list is reached, give each workflow its own prefix.

Build with a test key

Create a test key (mos_test_) under Integrations in the portal and use it until the whole flow works. A test key runs the same validation as a live key, but the note is never written, mailed or billed. Then switch to your live key and send one card to your own address before you turn the automation on for customers.

Limits and gotchas

  • The block times out after 2 minutes (source).
  • Its outputs are the HTTP status code, the response body, and whether the response was successful (a status from 200 to 299) (source). Attio's reference does not describe automatic retries, so check those outputs; re-running with the same key is always safe.
  • Attio may block some headers to protect its platform (source). Run the workflow once with a test key to confirm the request arrives with both headers.
  • The key is typed into the block, and Attio's reference does not describe a separate secret store. Limit who can edit the workflow, and rotate the key in the notecardHQ portal if it leaks.
  • The message is written exactly as sent, up to 500 characters including the greeting and sign-off.

Errors

  • 401. Missing or wrong key. Fix the key; do not retry.
  • 409. The Idempotency-Key was already used with a different body. Stop and check; never change the key to get past it.
  • 422. A missing field, a character the pen cannot write in the note (for example an emoji; accented letters are written without the accent), or an undeliverable US address. Nothing was created; fix the data.
  • 429 or 5xx. Temporary. Retry with the same key and the same body.

Vendor details checked on October 26, 2026 against Attio workflows block library. Platforms change their plans and features; check the source before you build.

Field rules, statuses and errors are in the API reference. Prefer another language? See the quickstart.

Send your first note.

Tell us what you want to send and we will set up your workspace.