Attentive Custom Events API

Use the Custom Events API to send user actions to use in the Attentive Segment Builder and Journey Builder for both email and text messages. This data cannot contain any sensitive or special categories of information as defined in applicable data protection and privacy laws, including the California Consumer Privacy Act (CCPA) and California Privacy Rights Act (CPRA). See a list of specific categories of data you cannot share with Attentive [here](https://docs.attentivemobile.com/pages/legal-docs/pi-disclaimer/).

OpenAPI Specification

attentive-custom-events-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: For any questions, reach out to your Attentive point of contact (if applicable) or [api@attentivemobile.com](mailto:api@attentivemobile.com).
  title: Attentive Access Token Custom Events API
  version: ''
servers:
- url: https://api.attentivemobile.com/v1
  description: Attentive API
security:
- bearerAuth: []
tags:
- name: Custom Events
  description: Use the Custom Events API to send user actions to use in the Attentive Segment Builder and Journey Builder for both email and text messages. This data cannot contain any sensitive or special categories of information as defined in applicable data protection and privacy laws, including the California Consumer Privacy Act (CCPA) and California Privacy Rights Act (CPRA). See a list of specific categories of data you cannot share with Attentive [here](https://docs.attentivemobile.com/pages/legal-docs/pi-disclaimer/).
  x-beta: false
paths:
  /events/custom:
    x-external: true
    description: 'Custom Events

      '
    post:
      x-external: true
      x-emits-event: true
      security:
      - OAuthFlow:
        - events:write
      summary: Custom Events
      description: Make a call to this endpoint for any event-based data representing user actions.
      operationId: postCustomEvents
      tags:
      - Custom Events
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomEventsRequest'
      responses:
        '200':
          description: Ok
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AccessDenied'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ExternalIdentifiers:
      type: object
      description: 'clientUserId or another custom identifier.  This field is required if either phone or email is not provided.


        If using an external identifier instead of phone or email, the external identifier must first be associated with a phone or email using the Identity API.

        '
      properties:
        clientUserId:
          type: string
          description: (optional) Your primary ID for a user
        customIdentifiers:
          type: array
          description: (optional) Namespaced custom identifiers and their values.
          items:
            type: object
            title: ExternalIdentifiersCustomIdentifiers
            properties:
              name:
                type: string
              value:
                type: string
    CustomEventsRequest:
      type: object
      properties:
        type:
          type: string
          description: 'The type of event. This name is case sensitive.

            "Order shipped" and "Order Shipped" would be considered different event types.


            The Custom Event type cannot any of the following special characters:

            * double quote "

            * single quote ''

            * parentheses ( )

            * curly braces { }

            * square brackets [ ]

            * backslash \

            * vertical bar |

            * commas ,

            '
          example: Order Shipped
        properties:
          type: object
          description: 'Any metadata associated with the event.


            Object keys are expected to be strings, and cannot contain any of the following special characters:

            * double quote "

            * curly braces { }

            * square brackets [ ]

            * backslash \

            * vertical bar |


            Object values can be any type. Note that both object keys and object values are case sensitive. For example, "deliverydate" and

            "DeliveryDate" would be considered different event properties.


            Notes:

            * When you’re creating journeys that use custom events data, you can only use lists and nested objects can only be used with email messages. Lists and nested objects are not currently supported for SMS.

            * For URLs that are provided as a value, Attentive will automatically shorten the link with your brand''s link shortener. For example, https://mysite.com/. Note that Attentive can only shorten URLs that are 1,024 characters or fewer.

            * Custom events must be triggered using the same custom app that originally created them.

            * There is a maximum of 200 object keys per custom event type. While payloads larger than this will be saved, not all keys will be available for use in Journeys and macros.

            '
          example:
            mediaUrl: https://cdn.example.com/images/sample-image.jpg
            orderStatusURL: https://example.com/orderstatus/54321
            delivery_date: May 10
            Order Id: '54321'
            products:
            - productId1
            - productId2
            shipment:
              carrier: fedex
              trackingNumber: '12345'
          properties:
            mediaUrl:
              type: string
              description: URL of the image that accompanies MMS. Be sure to add a dynamic product image in the message composer in the Attentive UI when adding a text message step to a journey triggered by the custom event.
          additionalProperties: true
        externalEventId:
          type: string
          description: A unique identifier representing this specific event. A UUID is recommended.
          example: 37fb97a9-6cfd-4983-bd65-68d104d53b70
        occurredAt:
          type: string
          format: date-time
          description: 'Timestamp of when the action occurred in [RFC 3339 format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.8) with required UTC offset. If the timestamp is older than 12 hours, it will not trigger any relevant Journeys. If no timestamp is provided, it is assumed the event occurred when the endpoint is called.

            '
          example: '2021-03-30T14:38:29.000Z'
        user:
          $ref: '#/components/schemas/EventUser'
      required:
      - type
      - user
    EventUser:
      type: object
      description: 'User associated with the action. Note that this is a visitor to the site and does not need to be actively subscribed to Attentive.

        Phone, email, or an external identifier (clientUserId or another custom identifier) are required

        '
      properties:
        phone:
          type: string
          description: Phone number of the user associated with the action. [E.164 format](https://en.wikipedia.org/wiki/E.164) is required. This field is required if either email or an externalIdentifier is not provided.
          example: '+13115552368'
        email:
          type: string
          description: Email of the user associated with the action. This field is required if either phone or an externalIdentifier is not provided.
          example: test@gmail.com
        externalIdentifiers:
          $ref: '#/components/schemas/ExternalIdentifiers'
      additionalProperties: false
      minProperties: 1
  responses:
    InternalError:
      description: Internal Server Error
    InvalidParameter:
      description: Invalid parameter in request query or body
    Unauthorized:
      description: Unauthorized
    NotFound:
      description: The specified resource was not found
    TooManyRequests:
      description: The user has sent too many requests in a given amount of time
    AccessDenied:
      description: Access Denied
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    OAuthFlow:
      type: oauth2
      description: This API uses OAuth 2 with the authorization code grant flow. [More info](https://docs.attentivemobile.com/pages/authentication/)
      flows:
        authorizationCode:
          authorizationUrl: https://ui-devel.attentivemobile.com/integrations/oauth-install?client_id={clientId}&redirect_uri={redirectUri}&scope={scope}
          tokenUrl: https://api.attentivemobile.com/v1/authorization-codes/tokens
          scopes:
            attributes:write: read and write custom attributes
            subscriptions:write: read and write subscriptions
            events:write: read and write custom events
            ecommerce:write: read and write ecommerce events
            segments:write: read and write segments
            segments:read: read segments
x-readme:
  explorer-enabled: false