{
  "event_data": {
    "plan_purchased": "Comprehensive Wellness++",
    "session_id": "13139112"
  },
  "event_id": "42b7133b-84db-436e-b721-7a63f2dde515",
  "event_name": "join-button-clicked",
  "occurred_at": "2025-01-02T03:04:05+06:00",
  "profile_ids": {
    "active_campaign": "51071",
    "athena": "12312",
    "axle_health": "0f472e61-138b-4bbe-b222-a5d254e2cdcd",
    "butterfly_labs": "663dbc35-500b-47d3-9d42-4bc29a729a08",
    "customer": "1ea83e74-1dd7-4569-b8d6-866a43680917",
    "customer_io": "e2e9163e-2a48-4cd4-9c78-0f7477c55126",
    "elation": "100121441215212",
    "feathery": "a9560d4e-5e75-43c8-89f8-2245ec2bdfd4",
    "formsort": "1ea83e74-1dd7-4569-b8d6-866a43680917",
    "freshdesk": "410ad90d-805f-4be5-9942-5490259c3ed6",
    "healthie": "43281",
    "hubspot": "80478911765",
    "intakeq": "8213",
    "intercom": "6025231623163",
    "junction": "51261b3f-de23-459e-9c82-ed97496e317e",
    "open_phone": "67f8f19bccf2f4d79cd6357a",
    "recurly": "3658ba4c-085d-4995-9e36-25f0401007db",
    "sana_benefits": "100031277",
    "segment": "51261b3f-de23-459e-9c82-ed97496e317e",
    "stripe": "cus_RpeF9OcJYBinL6"
  },
  "profile_properties": {
    "date_of_birth": "2000-01-01",
    "email_address": "johndoe@example.com",
    "phone_number": "+15551234122"
  },
  "source_id": null,
  "user_id": "d2aae7a5-b3b0-4bee-991b-695d501c91e5"
}
{
  "event_data": "(Optional) Data associated with the event, *not* automatically stored on the Morf Profile",
  "event_id": "(Optional) Unique identifier for the event (e.g. a UUID)",
  "event_name": "(Required) Event name",
  "occurred_at": "(Optional) Time the event occurred, if not provided - the time Morf receives the track event (RFC3339 ISO Format)",
  "profile_ids": {
    "active_campaign": "(Optional) An Active Campaign Contact ID",
    "athena": "(Optional) An Athena Patient ID",
    "axle_health": "(Optional) An Axle Health Patient ID",
    "butterfly_labs": "(Optional) A Butterfly Labs Patient ID",
    "customer": "(Optional) Any unique identifier in your organization",
    "customer_io": "(Optional) A Customer.io Customer ID",
    "elation": "(Optional) An Elation Patient ID",
    "feathery": "(Optional) A user ID for a Feathery flow",
    "formsort": "(Optional) A responder UUID for a Formsort flow",
    "freshdesk": "(Optional) A Freshdesk Contact ID",
    "healthie": "(Optional) A Healthie User (Patient) ID",
    "hubspot": "(Optional) A Hubspot Contact ID",
    "intakeq": "(Optional) An IntakeQ Patient ID",
    "intercom": "(Optional) An Intercom Contact ID",
    "junction": "(Optional) A Junction Patient ID",
    "open_phone": "(Optional) An OpenPhone Contact ID",
    "recurly": "(Optional) A Recurly Subscriber ID",
    "sana_benefits": "(Optional) A Sana Benefits Patient ID",
    "segment": "(Optional) A Segment Anonymous- or User- ID",
    "stripe": "(Optional) A Stripe Customer ID"
  },
  "profile_properties": "(Optional) Property values to store on the Morf Profile",
  "source_id": null,
  "user_id": "(Required) Unique user ID. Note: this value will be stored as the active customer ID"
}

The Morf Track API is used to send structured event and profile data to Morf. These events are used to trigger workflows which automatically update profile properties for your customers (Morf Profiles).

An example payload and description of the payload fields is given on the right hand side.

Events

Triggering Webhook Types

Any event_name is supported as an event type. For example, join-button-clicked is a valid event name. There are no limitations on the character set or length of the event name, however we recommend using a short, descriptive name which is easy to understand and identify.

Requests

Submit a POST request to the Morf Track API endpoint (ask your customer success liaison for details of the endpoint to use or navigate to the Connect tab of a Track workflow’s trigger node in the graph).

The POST request should include a JSON body with the data defined in the schema below. See the example and a description of the payload on the right hand side for details. We recommend setting the Content-Type: application/json header if you wish.

If a field is marked (Optional), you can either send that field in the payload or not. Eliding the key is tolerated as is submitting null as the value. These are treated equivalently.

Special Object Fields

Profile Properties (profile_properties)

Profile properties are used to store data on a Morf Profile. Any field matching an existing Morf Profile Property type will be updated on the Morf Profile. For example, if the payload’s profile properties object contains a date_of_birth field, the Morf Profile’s date_of_birth property will be updated.

New scalar field values inside this object will be added to the Morf Profile as new properties. For example, if you sent a new field like favorite_color with a value of blue, the new Property type will be created and updated on the Morf Profile.

Event Data (event_data)

Event data is used to store data associated with the event. This data is not automatically stored on the Morf Profile but is available to be accessed within a Morf Workflow.

Profile Ids (profile_ids)

This object is used to store IDs from third party systems. The customer field is used to store a unique identifier in your organization. The other fields are used to store IDs from other third party systems.

{
  "event_data": {
    "plan_purchased": "Comprehensive Wellness++",
    "session_id": "13139112"
  },
  "event_id": "42b7133b-84db-436e-b721-7a63f2dde515",
  "event_name": "join-button-clicked",
  "occurred_at": "2025-01-02T03:04:05+06:00",
  "profile_ids": {
    "active_campaign": "51071",
    "athena": "12312",
    "axle_health": "0f472e61-138b-4bbe-b222-a5d254e2cdcd",
    "butterfly_labs": "663dbc35-500b-47d3-9d42-4bc29a729a08",
    "customer": "1ea83e74-1dd7-4569-b8d6-866a43680917",
    "customer_io": "e2e9163e-2a48-4cd4-9c78-0f7477c55126",
    "elation": "100121441215212",
    "feathery": "a9560d4e-5e75-43c8-89f8-2245ec2bdfd4",
    "formsort": "1ea83e74-1dd7-4569-b8d6-866a43680917",
    "freshdesk": "410ad90d-805f-4be5-9942-5490259c3ed6",
    "healthie": "43281",
    "hubspot": "80478911765",
    "intakeq": "8213",
    "intercom": "6025231623163",
    "junction": "51261b3f-de23-459e-9c82-ed97496e317e",
    "open_phone": "67f8f19bccf2f4d79cd6357a",
    "recurly": "3658ba4c-085d-4995-9e36-25f0401007db",
    "sana_benefits": "100031277",
    "segment": "51261b3f-de23-459e-9c82-ed97496e317e",
    "stripe": "cus_RpeF9OcJYBinL6"
  },
  "profile_properties": {
    "date_of_birth": "2000-01-01",
    "email_address": "johndoe@example.com",
    "phone_number": "+15551234122"
  },
  "source_id": null,
  "user_id": "d2aae7a5-b3b0-4bee-991b-695d501c91e5"
}
{
  "event_data": "(Optional) Data associated with the event, *not* automatically stored on the Morf Profile",
  "event_id": "(Optional) Unique identifier for the event (e.g. a UUID)",
  "event_name": "(Required) Event name",
  "occurred_at": "(Optional) Time the event occurred, if not provided - the time Morf receives the track event (RFC3339 ISO Format)",
  "profile_ids": {
    "active_campaign": "(Optional) An Active Campaign Contact ID",
    "athena": "(Optional) An Athena Patient ID",
    "axle_health": "(Optional) An Axle Health Patient ID",
    "butterfly_labs": "(Optional) A Butterfly Labs Patient ID",
    "customer": "(Optional) Any unique identifier in your organization",
    "customer_io": "(Optional) A Customer.io Customer ID",
    "elation": "(Optional) An Elation Patient ID",
    "feathery": "(Optional) A user ID for a Feathery flow",
    "formsort": "(Optional) A responder UUID for a Formsort flow",
    "freshdesk": "(Optional) A Freshdesk Contact ID",
    "healthie": "(Optional) A Healthie User (Patient) ID",
    "hubspot": "(Optional) A Hubspot Contact ID",
    "intakeq": "(Optional) An IntakeQ Patient ID",
    "intercom": "(Optional) An Intercom Contact ID",
    "junction": "(Optional) A Junction Patient ID",
    "open_phone": "(Optional) An OpenPhone Contact ID",
    "recurly": "(Optional) A Recurly Subscriber ID",
    "sana_benefits": "(Optional) A Sana Benefits Patient ID",
    "segment": "(Optional) A Segment Anonymous- or User- ID",
    "stripe": "(Optional) A Stripe Customer ID"
  },
  "profile_properties": "(Optional) Property values to store on the Morf Profile",
  "source_id": null,
  "user_id": "(Required) Unique user ID. Note: this value will be stored as the active customer ID"
}

Schema Field Details

Track
Event Payload