6sense · AsyncAPI Specification

6sense AI Email Webhooks

Version 2

Outbound webhook events emitted by the 6sense AI Email product (formerly Conversational Email, formerly Saleswhale) to a customer-configured Target URL. PROVENANCE: 6sense does not publish an AsyncAPI document. This one was generated by API Evangelist from the provider's own published webhook reference at https://docs.saleswhale.com/ — the three event names, the envelope, the payload fields, the HMAC-SHA256 query-parameter signature scheme and the retry policy are all taken verbatim from that reference. Nothing here is invented. Field types are inferred from the published example payloads where the reference does not state them explicitly.

View Spec View on GitHub Account Based MarketingIntent DataB2BPredictive AnalyticsRevenueSales IntelligenceArtificial IntelligenceMarketing TechnologyAsyncAPIWebhooksEvents

Channels

webhook
The single endpoint all AI Email events are delivered to.

Messages

ConversationEnded
Conversation ended
Triggered whenever a conversation status changes to a terminal status. May fire more than once for the same conversation.
EmailSent
Email sent
Triggered whenever an email is sent by the AI email agent.
LeadMarkedDoNotContact
Lead marked Do Not Contact
Triggered whenever a lead is marked Do Not Contact. This cannot be reverted; treat as an authoritative suppression signal.

Servers

https
customerTarget
Customer-configured webhook Target URL, set in AI Email Account Settings. 6sense POSTs to this URL with ?signature=×tamp= appended.

AsyncAPI Specification

Raw ↑
asyncapi: 3.0.0
info:
  title: 6sense AI Email Webhooks
  version: '2'
  description: >-
    Outbound webhook events emitted by the 6sense AI Email product (formerly
    Conversational Email, formerly Saleswhale) to a customer-configured Target
    URL.


    PROVENANCE: 6sense does not publish an AsyncAPI document. This one was
    generated by API Evangelist from the provider's own published webhook
    reference at https://docs.saleswhale.com/ — the three event names, the
    envelope, the payload fields, the HMAC-SHA256 query-parameter signature
    scheme and the retry policy are all taken verbatim from that reference.
    Nothing here is invented. Field types are inferred from the published example
    payloads where the reference does not state them explicitly.
  contact:
    name: 6sense AI Email Support
    email: support@saleswhale.com
    url: https://docs.saleswhale.com/
  externalDocs:
    description: 6sense AI Email API Overview
    url: https://support.6sense.com/docs/6sense-conversational-email-overview-of-api

defaultContentType: application/json

servers:
  customerTarget:
    host: 'example.com'
    protocol: https
    description: >-
      Customer-configured webhook Target URL, set in AI Email Account Settings.
      6sense POSTs to this URL with ?signature=<hex>&timestamp=<unix> appended.

channels:
  webhook:
    address: /
    title: Customer webhook Target URL
    description: The single endpoint all AI Email events are delivered to.
    servers:
      - $ref: '#/servers/customerTarget'
    messages:
      conversationEnded:
        $ref: '#/components/messages/ConversationEnded'
      emailSent:
        $ref: '#/components/messages/EmailSent'
      leadMarkedDoNotContact:
        $ref: '#/components/messages/LeadMarkedDoNotContact'

operations:
  receiveConversationEnded:
    action: receive
    channel:
      $ref: '#/channels/webhook'
    summary: Conversation reached a terminal state.
    messages:
      - $ref: '#/channels/webhook/messages/conversationEnded'
  receiveEmailSent:
    action: receive
    channel:
      $ref: '#/channels/webhook'
    summary: The AI email agent sent an email to a lead.
    messages:
      - $ref: '#/channels/webhook/messages/emailSent'
  receiveLeadMarkedDoNotContact:
    action: receive
    channel:
      $ref: '#/channels/webhook'
    summary: A lead was marked Do Not Contact.
    messages:
      - $ref: '#/channels/webhook/messages/leadMarkedDoNotContact'

components:
  messages:
    ConversationEnded:
      name: conversation.ended
      title: Conversation ended
      summary: >-
        Triggered whenever a conversation status changes to a terminal status.
        May fire more than once for the same conversation.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ConversationEndedPayload'
      examples:
        - name: qualified
          payload:
            event_name: conversation.ended
            event_time: '2017-05-19T12:11:03.321+08:00'
            event_payload:
              conversation:
                id: 12513522
                started_at: '2018-08-16T06:32:00.000Z'
                handover_rep:
                  id: 95233
                  type: sales_rep
                leads:
                  - id: 32244
                    email: clara.smith@saleswhale.com
                    is_main: false
                    is_original: true
                  - id: 32552
                    email: michael.wyke@saleswhale.com
                    is_main: true
                    is_original: false
                status: qualified
                enrolment:
                  id: 2214225
                  status: processed
                  campaign_id: 2245
                  lead_id: 32244
                  errors: null
                  conversation_id: 12513522
    EmailSent:
      name: email.sent
      title: Email sent
      summary: Triggered whenever an email is sent by the AI email agent.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EmailSentPayload'
      examples:
        - name: outbound
          payload:
            event_name: email.sent
            event_time: '2019-11-08T08:06:22.472+00:00'
            event_payload:
              email:
                cc: []
                to:
                  - jeremy@example.com
                from: david@example.com
                snippet: Hi Jeremy, would your company be interested in a great product?
                subject: Are you interested, Jeremy?
                created_at: '2019-11-08T08:03:37.000Z'
                conversation_id: 12513522
    LeadMarkedDoNotContact:
      name: lead.marked_do_not_contact
      title: Lead marked Do Not Contact
      summary: >-
        Triggered whenever a lead is marked Do Not Contact. This cannot be
        reverted; treat as an authoritative suppression signal.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LeadMarkedDoNotContactPayload'

  schemas:
    Envelope:
      type: object
      required:
        - event_name
        - event_time
        - event_payload
      properties:
        event_name:
          type: string
          description: Name of the event that triggers the webhook request.
        event_time:
          type: string
          format: date-time
          description: Timestamp of when the webhook is triggered.
        event_payload:
          type: object

    ConversationEndedPayload:
      allOf:
        - $ref: '#/components/schemas/Envelope'
        - type: object
          properties:
            event_name:
              const: conversation.ended
            event_payload:
              type: object
              properties:
                conversation:
                  $ref: '#/components/schemas/Conversation'

    EmailSentPayload:
      allOf:
        - $ref: '#/components/schemas/Envelope'
        - type: object
          properties:
            event_name:
              const: email.sent
            event_payload:
              type: object
              properties:
                email:
                  $ref: '#/components/schemas/Email'

    LeadMarkedDoNotContactPayload:
      allOf:
        - $ref: '#/components/schemas/Envelope'
        - type: object
          properties:
            event_name:
              const: lead.marked_do_not_contact
            event_payload:
              type: object
              properties:
                lead:
                  $ref: '#/components/schemas/Lead'

    Conversation:
      type: object
      description: >-
        The conversation that reached a terminal state. Retrieve full detail with
        the Show a Conversation endpoint using id.
      properties:
        id:
          type: integer
        started_at:
          type: string
          format: date-time
        handover_rep:
          $ref: '#/components/schemas/ActorRef'
        leads:
          type: array
          description: >-
            Usually one lead. Multiple when the lead referred a colleague or CCed
            others; all leads in a conversation share the conversation status.
          items:
            $ref: '#/components/schemas/ConversationLead'
        status:
          type: string
          description: Conversation status at the moment the webhook fired.
          enum:
            - bounced
            - human_review
            - not_interested
            - qualified
            - stopped_responding
            - unresponsive
            - cancelled
        enrolment:
          $ref: '#/components/schemas/Enrolment'

    ConversationLead:
      type: object
      properties:
        id:
          type: integer
        email:
          type: string
          format: email
        is_main:
          type: boolean
          description: >-
            True for the 'To' recipient — assumed to be the last person who
            replied to the AI email agent.
        is_original:
          type: boolean
          description: True for the lead the conversation was first started on.

    Enrolment:
      type: object
      properties:
        id:
          type: integer
        status:
          type: string
        campaign_id:
          type: integer
        lead_id:
          type: integer
        errors:
          type:
            - string
            - 'null'
        conversation_id:
          type: integer

    ActorRef:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          examples:
            - sales_rep

    Email:
      type: object
      properties:
        to:
          type: array
          items:
            type: string
            format: email
        cc:
          type: array
          items:
            type: string
            format: email
        from:
          type: string
          format: email
        snippet:
          type: string
          maxLength: 117
          description: Short summary of the email body, truncated to a maximum of 117 characters.
        subject:
          type: string
        created_at:
          type: string
          format: date-time
        conversation_id:
          type: integer

    Lead:
      type: object
      properties:
        id:
          type: integer
        email:
          type: string
          format: email
        first_name:
          type: string
        last_name:
          type: string
        job_title:
          type:
            - string
            - 'null'
        follow_up_at:
          type:
            - string
            - 'null'
        account_name:
          type:
            - string
            - 'null'
        lead_owner:
          $ref: '#/components/schemas/ActorRef'
        do_not_contact:
          type: boolean
        custom_attribute_values:
          type: array
          items:
            $ref: '#/components/schemas/CustomAttributeValue'

    CustomAttributeValue:
      type: object
      properties:
        custom_attribute_id:
          type: integer
        value:
          type: string
        custom_attribute_name:
          type: string

  securitySchemes:
    webhookSignature:
      type: httpApiKey
      name: signature
      in: query
      description: >-
        SHA256 HMAC hexdigest over "<timestamp>.<raw body>", keyed with the
        account's AI Email API key, delivered as a query parameter alongside a
        timestamp parameter. Compare in constant time and enforce your own
        timestamp tolerance to reject replays.

x-provenance:
  generated: '2026-08-13'
  method: generated
  generated_by: API Evangelist enrichment pipeline
  derived_from: https://docs.saleswhale.com/
  catalog: asyncapi/6sense-ai-email-webhooks.yml
  provider_published: false