For Agents
Log, read, search, and batch-manage HubSpot email engagement records on the CRM timeline via /crm/v3/objects/emails.
Get started with Emails in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"log a HubSpot email engagement"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Emails API.
Log a sent email engagement on a contact's timeline via POST /crm/v3/objects/emails
Update email metadata such as subject or status with PATCH /crm/v3/objects/emails/{emailId}
Search email records by direction, status, or owner through POST /crm/v3/objects/emails/search
Batch-import historical email logs with POST /crm/v3/objects/emails/batch/create
GET STARTED
Use for: I need to log an outbound email I just sent from my own client onto a HubSpot contact's timeline, Search for all logged emails on a deal in the last 30 days, Update the subject line on an existing email engagement record, Bulk-import historical email logs from an external mailbox into HubSpot
Not supported: Does not send outbound email, render templates, or run drip campaigns — use for logging and reading email engagement records on the HubSpot CRM timeline only.
The HubSpot Emails CRM API manages email engagement records — logged emails, replies, and email metadata — that appear on contact and deal timelines. It exposes single and batch CRUD plus search across /crm/v3/objects/emails, supporting custom properties, pagination, and association lookups. Use it to log outbound emails sent from external tools, sync inbox replies, or pull engagement history for reporting; it does not send marketing or transactional emails.
Upsert emails by external message ID via POST /crm/v3/objects/emails/batch/upsert
Archive obsolete email records with DELETE /crm/v3/objects/emails/{emailId}
Patterns agents use Emails API for, with concrete tasks.
★ External Mailbox Sync
Mirror outbound and inbound emails from an external IMAP mailbox or proprietary mailer into HubSpot so reps see complete activity history on the contact and deal timelines. The batch create endpoint handles up to 100 records per call, and upserting by an external message ID prevents duplicates on re-runs of the sync. Pair with the Associations API to attach each email to the right contact.
Batch-upsert 50 historical emails via POST /crm/v3/objects/emails/batch/upsert with idProperty hs_email_message_id, then chain Associations to link each to the matching contact.
Engagement Reporting
Pull email engagements by date, owner, or direction to power weekly outreach reports — for example, total emails sent by each rep and the count of replies received. The search endpoint accepts complex filterGroups and returns paginated results so reporting jobs can stream large result sets without timing out.
Search HubSpot emails where hs_email_direction equals OUTGOING and hubspot_owner_id equals 200 and createdate is within the last 7 days, returning the count and first page.
Reply Detection and Routing
Detect when a contact replies to a sales email, then route the reply to the right rep or workflow. The search endpoint can filter by direction INCOMING and a recent threshold timestamp, while a follow-up PATCH can stamp a custom property to mark the reply as processed. This keeps an automated outreach loop honest without bypassing HubSpot.
Search for emails where hs_email_direction equals INCOMING and createdate is within the last hour, then PATCH a custom processed property on each result.
Agent-Driven Email Logging via Jentic
An AI assistant drafting and sending email from a custom UI logs each send to HubSpot so reps see the activity on the contact timeline without leaving the assistant. Through Jentic the agent searches for the create operation, loads the schema, and executes it with the parsed subject, body, and direction. The flow runs on a single Jentic credential without exposing the HubSpot key.
Use Jentic to search 'log a HubSpot email engagement', load the POST /crm/v3/objects/emails schema, and execute it with hs_email_subject, hs_email_text, and hs_email_direction OUTGOING.
11 endpoints — the hubspot emails crm api manages email engagement records — logged emails, replies, and email metadata — that appear on contact and deal timelines.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/emails
List email engagements with pagination
/crm/v3/objects/emails
Log a new email engagement
/crm/v3/objects/emails/{emailId}
Retrieve an email engagement by ID
/crm/v3/objects/emails/{emailId}
Update an email engagement
/crm/v3/objects/emails/batch/upsert
Batch-upsert emails by external ID
/crm/v3/objects/emails/search
Search email engagements
/crm/v3/objects/emails
List email engagements with pagination
/crm/v3/objects/emails
Log a new email engagement
/crm/v3/objects/emails/{emailId}
Retrieve an email engagement by ID
/crm/v3/objects/emails/{emailId}
Update an email engagement
/crm/v3/objects/emails/batch/upsert
Batch-upsert emails by external ID
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth tokens and private app keys are stored encrypted in the Jentic vault. Agents receive a scoped execution token — the raw HubSpot credential is injected at call time and never enters the agent's context.
Intent-based discovery
Agents search Jentic by intent (e.g., 'log a HubSpot email engagement') and Jentic returns the matching /crm/v3/objects/emails operation with its input schema, so the agent calls the right endpoint without parsing HubSpot docs.
Time to first call
Direct HubSpot integration: 2-3 days for OAuth scopes, association chaining, and message-ID dedup. Through Jentic: under 1 hour — search, load, execute.
Alternatives and complements available in the Jentic catalogue.
HubSpot Contacts
Attach logged emails to the contacts they were sent to or received from
Use Contacts to find the right contact ID before associating a newly logged email.
HubSpot Deals
Surface logged emails on the deal timeline
Associate logged emails with deals when the engagement is part of a specific opportunity.
HubSpot Marketing Email V3
Send marketing email campaigns rather than logging external messages
Choose Marketing Email when the goal is to send a campaign through HubSpot rather than mirror an externally sent message.
SendGrid Mail Send
Send transactional email and log the send back to HubSpot
Pair with the Emails API when sending transactional mail through SendGrid and recording the engagement on the HubSpot timeline.
Specific to using Emails API through Jentic.
What authentication does the HubSpot Emails CRM API use?
The Emails API accepts OAuth 2.0 access tokens with the crm.objects.contacts and engagements scopes plus HubSpot private app API keys passed in the private-app or private-app-legacy header. Through Jentic the credential lives in the MAXsystem vault and is injected at execution time so it never enters the agent's context.
Does this API send emails or just log them?
It only logs and manages engagement records on the CRM timeline — it does not send outbound mail. To send marketing email use HubSpot's Marketing Email API; to send transactional email use a provider like SendGrid and log the result here via POST /crm/v3/objects/emails.
What are the rate limits for the HubSpot Emails CRM API?
Account-level limits apply — typically 100 requests per 10 seconds for OAuth apps and 190 per 10 seconds for private apps on paid tiers. Use POST /crm/v3/objects/emails/batch/create or batch/upsert when importing historical mail since each batch counts as one request.
How do I log an email through Jentic?
Run jentic.search('log a HubSpot email engagement'), load the schema for POST /crm/v3/objects/emails, and execute it with hs_email_subject, hs_email_text, hs_email_direction, and hs_timestamp. Jentic returns the created engagement as structured JSON for downstream chaining.
Can I associate a logged email with a contact and a deal?
Yes, but the association is created via the CRM Associations API after the email engagement is created. Pass the new email's ID and the target contact or deal ID into the associations call — Jentic exposes that as a separate operation you can chain.
How do I distinguish outbound from inbound emails?
Use the hs_email_direction property — values include OUTGOING, INCOMING, and FORWARD. Filter on this property in POST /crm/v3/objects/emails/search to power direction-specific workflows like reply detection.
/crm/v3/objects/emails/search
Search email engagements