Skip to content
Preview. The endpoints on this page are illustrative and are likely to change as they move toward general availability. Documentation is published in advance so you can start shaping your integration; treat request and response details as subject to revision.

SentEmail object

A SentEmail represents one message Cirrus dispatched on behalf of a user in your organization, along with the engagement it has received. It is the row shape returned by /api/v1alpha1/buyer-signals/sent-emails and the anchor for per-recipient signal drill-downs.

Message bodies are not exposed — the full body of the outbound message lives in the sender's mailbox.

The SentEmail schema

json
{
  "id": "semail_...",
  "subject": "Following up on Q3 pipeline forecasting",
  "sender": {
    "userId": "usr_...",
    "displayName": "Alex Rivera"
  },
  "recipientEmails": ["guest@example.com"],
  "sentAt": "2026-08-11T14:30:00Z",
  "opens": 5,
  "clicks": 1,
  "replies": 1,
  "lastOpenAt":  "2026-08-12T09:22:03Z",
  "lastClickAt": "2026-08-12T09:22:41Z",
  "lastReplyAt": "2026-08-12T10:14:07Z",
  "lastOpenLocation": "New York, NY",
  "emailType": "standard",
  "blastId": null
}

Fields


id string

Sent-email identifier, prefixed semail_. Stable — the same physical message keeps this id across every subsequent open, click, and reply that arrives.


subject string

Subject line as it was sent. For blasts, merge fields () are preserved as placeholders — the per-recipient rendered form is not stored.


sender object

Cirrus user who sent the message.

AttributeTypeDescription
userIdstringUser identifier, prefixed usr_.
displayNamestringConcatenated first + last, falling back to email.

recipientEmails array

Every address the message was sent to (to + cc + bcc combined). One-recipient messages are the common case; multi-recipient rows appear when a user cc'd colleagues or when a blast batched a small group into one physical send.

For per-recipient engagement counts, hit the sent email's /signals drill-down — this array only tells you who was on the envelope, not who engaged.


sentAt string

ISO 8601 UTC. When Cirrus dispatched the message.


opens, clicks, replies number

Raw event counts across all recipients on the send. A recipient who opens the same email three times contributes 3 to opens. For unique-recipient stats (how many people replied), pull the /signals drill-down and count replies > 0 rows.


lastOpenAt, lastClickAt, lastReplyAt string

(optional) ISO 8601 UTC. Timestamp of the most recent event of each type. null when no such event has occurred.

lastReplyAt is the "did this email get a response, and when" answer — the field to sort on when you're triaging a follow-up queue.


lastOpenLocation string

(optional) Coarse city-level geolocation of the IP that fired the most recent tracking-pixel open. null when the recipient's mail client suppressed the pixel, when the location wasn't confident, or when no open has been recorded.

Not a security signal — VPN and mail-scanner services will attribute opens to other cities routinely.


emailType string

ValueMeaning
standardOne-off email sent from a user's Sidebar / Gmail / Outlook integration.
email-blastMessage dispatched as part of a bulk campaign. blastId is populated.

blastId string

(optional) When emailType is email-blast, the parent blast's identifier. Use it to fetch the blast-level aggregates via Email Blasts. null for standard sends.

Raleigh, NC — a Cirruspath, Inc. company