For Agents
Log, read, update, archive, and search HubSpot postal mail engagement records so direct mail activity sits alongside emails and calls in the CRM.
Use for: I need to log a direct mail send against a contact, Find all postal mail engagements sent in a campaign, Get the postal mail record for a specific ID, Bulk import postal mail sends from a print partner CSV
Not supported: Does not print, mail, or fulfil physical letters — use for logging postal mail engagement records into HubSpot CRM only.
The HubSpot Postal Mail API treats postal mail engagements — direct mail letters, postcards, packages — as first-class CRM records that can be logged against contacts, companies, and deals. It supports the standard CRM object pattern: read, list, patch, and archive single records, plus batch read, create, update, and archive of up to 100 records per call, and a search endpoint with filter groups and sort. Use it to log direct mail sends from a print partner back into the CRM, build outreach reports that combine digital and offline channels, and trigger follow-up sequences once a piece of postal mail is delivered.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Postal Mail, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Postal Mail API.
Log a postal mail engagement on a contact or company record
Read a single postal mail record by ID with property selection
List postal mail engagements with cursor-based pagination
Search postal mail by date sent, status, or campaign property
Batch create up to 100 postal mail records from a print partner export
Update or archive postal mail records when a send is cancelled or reissued
Patterns agents use Postal Mail API for, with concrete tasks.
★ Direct mail engagement logging
Capture every direct mail piece a print partner sends so it shows up alongside email and call engagements on the contact timeline. Use POST /crm/v3/objects/postal_mail/batch/create to push batches of postal mail engagements with associations to the recipient contacts, then PATCH each record once a delivery confirmation arrives.
POST 100 postal mail records to /crm/v3/objects/postal_mail/batch/create with hs_postal_mail_subject and hs_timestamp set, plus contact associations.
Multi-channel outreach reporting
Build a report that combines digital and offline outreach by listing postal mail engagements alongside emails, calls, and meetings. POST /crm/v3/objects/postal_mail/search with date filters returns the postal mail subset; combine with the other engagement APIs for a unified channel view.
POST a search to /crm/v3/objects/postal_mail/search filtering hs_timestamp greater than the start of the quarter, sorted ascending.
Cancelled-send cleanup
Archive postal mail records when a print run is cancelled or reissued so the timeline only reflects pieces that actually went out. POST /crm/v3/objects/postal_mail/batch/archive removes up to 100 records in a single call.
POST /crm/v3/objects/postal_mail/batch/archive with the IDs of 50 cancelled mail records.
AI agent execution through Jentic
An agent that needs to log postal mail engagements discovers this API via Jentic's intent search using a query like 'log direct mail in hubspot', loads the input schema for the chosen operation, and executes the call with credentials supplied from the Jentic vault. The same flow handles batch create, search, and patch.
Search Jentic for 'log direct mail in hubspot', load POST /crm/v3/objects/postal_mail/batch/create, and execute with one postal mail record.
11 endpoints — the hubspot postal mail api treats postal mail engagements — direct mail letters, postcards, packages — as first-class crm records that can be logged against contacts, companies, and deals.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/postal_mail/{postalMailId}
Read a single postal mail record by ID
/crm/v3/objects/postal_mail/{postalMailId}
Update a postal mail record's properties
/crm/v3/objects/postal_mail/{postalMailId}
Archive a postal mail record
/crm/v3/objects/postal_mail
List postal mail records with pagination
/crm/v3/objects/postal_mail/batch/create
Create up to 100 postal mail records in one call
/crm/v3/objects/postal_mail/batch/read
Read up to 100 postal mail records by ID
/crm/v3/objects/postal_mail/batch/update
Update up to 100 postal mail records in one call
/crm/v3/objects/postal_mail/batch/archive
Archive up to 100 postal mail records in one call
/crm/v3/objects/postal_mail/{postalMailId}
Read a single postal mail record by ID
/crm/v3/objects/postal_mail/{postalMailId}
Update a postal mail record's properties
/crm/v3/objects/postal_mail/{postalMailId}
Archive a postal mail record
/crm/v3/objects/postal_mail
List postal mail records with pagination
/crm/v3/objects/postal_mail/batch/create
Create up to 100 postal mail records in one call
/crm/v3/objects/postal_mail/batch/read
Read up to 100 postal mail records by ID
/crm/v3/objects/postal_mail/batch/update
Update up to 100 postal mail records in one call
/crm/v3/objects/postal_mail/batch/archive
Archive up to 100 postal mail records in one call
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth and private app tokens live encrypted in the Jentic vault. Jentic injects the Authorization header at request time so credentials never enter agent prompts, transcripts, or logs.
Intent-based discovery
Agents search by intent (e.g. 'log direct mail in hubspot' or 'search postal mail by date') and Jentic returns the matching Postal Mail operation with its JSON Schema, including association payload structure.
Time to first call
Direct integration: half a day to wire OAuth, batch payloads, and association calls. Through Jentic: under 30 minutes — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
Specific to using Postal Mail API through Jentic.
What authentication does the HubSpot Postal Mail API use?
It accepts OAuth 2.0 access tokens and private app access tokens passed as a Bearer credential in the Authorization header. Through Jentic, the token is stored encrypted in the credential vault and attached at execution time.
Can I associate a postal mail engagement with a contact and a deal?
Yes. Pass associations in the create payload referencing both the contact ID and the deal ID, and HubSpot will link the postal mail record to both. The same record will appear on each associated record's timeline.
What are the rate limits for the HubSpot Postal Mail API?
It shares HubSpot's account-level rate limits, typically 100 requests per 10 seconds for OAuth apps. Use POST /crm/v3/objects/postal_mail/batch/create to ingest up to 100 records per request when importing from a print partner.
How do I bulk-import postal mail through Jentic?
Search Jentic with 'batch create postal mail hubspot', load POST /crm/v3/objects/postal_mail/batch/create, and execute with up to 100 records per call. The response returns each record's id and properties for downstream association.
Is the HubSpot Postal Mail API free?
It is included with HubSpot accounts that have CRM access enabled; there is no per-call charge for the endpoints. Standard account-level rate limits apply.
How do I update the delivery status on a postal mail record?
PATCH /crm/v3/objects/postal_mail/{postalMailId} with a properties object containing the status field your portal uses (for example a custom hs_postal_mail_status property). Other properties on the record remain untouched.
GET STARTED