API ReferenceBuilding AppsInstalling IntercomAPI & Webhook ReferenceCanvas Kit Reference
DocsApp StoreCommunityBlogYour Apps

Admin Initiated Conversation

Email From Admin

$ curl https://api.intercom.io/messages \
-H 'Authorization:Bearer <Your access token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d'
  "message_type": "email",
  "subject": "Hey",
  "body": "Ponies, cute small horses or something more sinister?",
  "template": "plain",
  "from": {
    "type": "admin",
    "id": "394051"
  "to": {
    "type": "user",
    "id": "536e564f316c83104c000020"
HTTP/1.1 200 OK

  "type": "admin_message",
  "id": "2001",
  "created_at": 1401916877,
  "message_type": "email",
  "subject" : "Hey",
  "body" : "Ponies, cute small horses or something more sinister?",
  "template": "plain",
  "owner": {
    "email": "[email protected]",
    "id": "394051",
    "name": "Wash",
    "type": "admin"
  :message_type => 'email',
  :subject  => 'This Land',
  :body     => "Har har har! Mine is an evil laugh!",
  :template => "plain", # or "personal",
  :from => {
    :type => "admin",
    :id   => "394051"
  :to => {
    :type => "user",
    :id => "536e564f316c83104c000020"
    "message_type" => "email",
    "subject" => "Plato Quote",
    "body" => "And what, Socrates, is the food of the soul?",
    "from" => [
        "type" => "admin",
        "id" => "814860"
    "to" => [
        "type" => "user",
        "email" => "[email protected]"
User user = new User()
Admin admin = new Admin()
AdminMessage adminMessage = new AdminMessage()
  .setSubject("This Land")
  .setBody("Har har har! Mine is an evil laugh!")
  .setTemplate("plain"); // or personal

You can create a new admin initiated message by submitting a POST to https://api.intercom.io/messages along with JSON message.

An admin initiated message can be delivered to a user as an In-App conversation or as an Email. The message_type field is used to determine which, with a value of either inapp or email. For admin initiated In-App messages, they will not trigger push notifications.

Receiving Users are identified by a user_id, id, or email field in the to object.

Receiving Contacts are identified by a user_id or id field in the to object.

The type field for the to object is then set to either contact or user.

The subject field is only used for email type messages and will not be used for inapp message types.

A sending admin must be added using the from field, along with a type field value of admin and the corresponding Intercom id for that admin. The admin's Intercom id value may be obtained from the List Admins resource.


Conversation V Message

Note that since creating an admin-initiated conversation hits the /messages endpoint, the response contains a message object rather than a conversation object. As a result you will not see the conversation ID in the returned message object. You may, however, retrieve the customers's conversations and iterate over them looking for the message_id value.


message_typestringThe kind of message being created. Values: inapp or email
subjectstringOptional unless message_type is email. The title of the email.
bodystringThe content of the message. HTML or plaintext.
templatestringThe style of the outgoing message. Only valid for email messages. Possible values plain or personal.
fromobjectRequired. An admin object containing the admin's id. The type field must have a value of admin.
toobjectRequired. A user object containing the user's id, email or user_id. The type field must have a value of user or of contact.


The created message object.

If the from type was supplied with an admin's details, the owner field in the response will represent the admin in question.