Skip to main content

Event Types

We are continually adding more event types as we build out the Texture platform so if there is an event type you would like to see, please let us know.

First some overall notes on the event types:

We follow the Standard Webhook Specification as closely as possible for maximum compatibility with existing webhook integrations.

  • All events are sent to the destination as a JSON object.
  • All events have a type property that indicates the type of event.
  • All events have a version property that indicates the version of the event type. We use semver for versioning.
  • All events have a key property that is a unique identifier for the event. The key is a hash of the event data and is used to deduplicate events helping you avoid duplicate events.

customer.created

Fired whenever a customer is created on the Texture platform.

{
  "type": "customer.created",
  "version": "0.0.1",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "id": "cllzcbw0t00016g7dfua590dd",
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "referenceId": "user-123456",
    "organizationId": "cm6y0mhhy00000cl4hz6i78ik",
    "updatedAt": "2024-08-22T15:54:52.013Z",
    "createdAt": "2024-08-22T15:54:52.013Z",
    "email": "bjones@texturehq.com",
    "firstName": "Bob",
    "lastName": "Jones",
    "phone": "+15551234567"
  }
}
KeyDescription
idThe unique identifier for the customer.
workspaceIdThe ID of the workspace associated with the customer.
referenceIdThe reference ID for the customer.
organizationIdThe ID of the organization associated with the customer.
updatedAtThe date and time when the customer was last updated.
createdAtThe date and time when the customer was created.
emailThe email address of the customer.
firstNameThe first name of the customer.
lastNameThe last name of the customer.
phoneThe phone number of the customer.

command.failed

Fired whenever a command run against a device fails.

{
  "type": "command.failed",
  "version": "0.0.2",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "commandId": "cllzcbw0t00016g7dfua590dd",
    "deviceId": "cllzcbw0t00016g7dfua590dd",
    "error": {
      "message": "Failed to execute command"
    },
    "issuedAt": "2023-09-01T20:48:24.967Z",
    "executedAt": "2023-09-01T20:48:24.967Z"
  }
}
KeyDescription
workspaceIdThe ID of the workspace associated with the command.
commandIdThe unique identifier for the command.
deviceIdThe ID of the device on which the command was executed.
error.messageThe error that occurred.
issuedAtThe date and time when the command was issued.
executedAtThe date and time when the command was executed.

command.succeeded

Fired whenever a command run against a device succeeds.

{
  "type": "command.succeeded",
  "version": "0.0.2",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "commandId": "cllzcbw0t00016g7dfua590dd",
    "deviceId": "cllzcbw0t00016g7dfua590dd",
    "issuedAt": "2023-09-01T20:48:24.967Z",
    "executedAt": "2023-09-01T20:48:24.967Z"
  }
}
KeyDescription
workspaceIdThe ID of the workspace associated with the command.
commandIdThe unique identifier for the command.
deviceIdThe ID of the device on which the command was executed.
issuedAtThe date and time when the command was issued.
executedAtThe date and time when the command was executed.

device.discovered

Fired when a new device is connected to the Texture platform. Includes the following payload:

{
  "type": "device.discovered",
  "version": "1.0.0",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "deviceId": "cllzcbw0t00016g7dfua590dd",
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "organizationId": "cm6y391is00000cjlea9361ht",
    "updatedAt": "2024-08-22T15:54:52.013Z",
    "createdAt": "2024-08-22T15:54:52.013Z",
    "manufacturer": {
      "slug": "tesla",
      "displayName": "Tesla"
    },
    "deviceModel": {
      "slug": "tesla:powerwall",
      "displayName": "Powerwall"
    },
    "deviceType": "battery",
    "tags": [
      "battery",
      "powerwall"
    ],
    "customer": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "email": "bjones@texturehq.com",
      "firstName": "Bob",
      "lastName": "Jones",
      "phone": "+15551234567"
    },
    "site": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "name": "Empire State Building",
      "address": {
        "streetAddress1": "20 W 34th St",
        "city": "New York",
        "state": "NY",
        "postalCode": "10118",
        "country": "US"
      },
      "longitude": -73.985428,
      "latitude": 40.748817
    }
  }
}
KeyDescription
deviceIdThe unique identifier for the device.
workspaceIdThe ID of the workspace associated with the device.
organizationIdThe ID of the organization associated with the device.
updatedAtThe timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt.
createdAtThe date and time when the device was created.
manufacturer.slugThe human-readable identifier of the manufacturer of the device.
manufacturer.displayNameThe display name of the manufacturer of the device.
deviceModel.slugThe human-readable identifier of the device model.
deviceModel.displayNameThe display name of the device model.
deviceTypeThe type of device (e.g. battery).
tagsAn array of tags associated with the device.
customer.idThe unique identifier for the customer associated with the device.
customer.referenceIdThe reference ID for the customer associated with the device.
customer.emailThe email address of the customer associated with the device.
customer.firstNameThe first name of the customer associated with the device.
customer.lastNameThe last name of the customer associated with the device.
customer.phoneThe phone number of the customer associated with the device.
site.idThe unique identifier for the site associated with the device.
site.nameThe name of the site associated with the device.
site.address.streetAddress1The first line of the street address of the site associated with the device.
site.address.streetAddress2The second line of the street address of the site associated with the device.
site.address.cityThe city of the site associated with the device.
site.address.stateThe state of the site associated with the device.
site.address.postalCodeThe postal code of the site associated with the device.
site.address.countryThe country of the site associated with the device.
site.longitudeThe longitude of the geographical coordinates of the site associated with the device.
site.latitudeThe latitude of the geographical coordinates of the site associated with the device.

Note that when you configure a destination, you can specify which device types are fired for a given destination which can act as a kind of filter. So for example you could say that you want only Battery updates to go to a given webhook and we will filter them for you.

device.updated

Fired whenever we get updated data for a device.

{
  "type": "device.updated",
  "version": "1.0.0",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "deviceId": "cllzcbw0t00016g7dfua590dd",
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "organizationId": "cm6y391is00000cjlea9361ht",
    "updatedAt": "2024-08-22T15:54:52.013Z",
    "createdAt": "2024-08-22T15:54:52.013Z",
    "manufacturer": {
      "slug": "tesla",
      "displayName": "Tesla"
    },
    "deviceModel": {
      "slug": "tesla:powerwall",
      "displayName": "Powerwall"
    },
    "deviceType": "battery",
    "tags": [
      "battery",
      "powerwall"
    ],
    "customer": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "email": "bjones@texturehq.com",
      "firstName": "Bob",
      "lastName": "Jones",
      "phone": "+15551234567"
    },
    "site": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "name": "Empire State Building",
      "address": {
        "streetAddress1": "20 W 34th St",
        "city": "New York",
        "state": "NY",
        "postalCode": "10118",
        "country": "US"
      },
      "longitude": -73.985428,
      "latitude": 40.748817
    },
    "state": {
      "id": "cltyhxpy406poq4z3zx19y2fs",
      "charge": 18069.15789473684,
      "chargePercentage": 59.30925587453832,
      "chargingState": "charging",
      "whConsumed": 0,
      "chargeRate": -2290,
      "backupReserve": 30,
      "gridStatus": "idle",
      "gridPower": 0,
      "gridEnergy": 0,
      "isStormModeEnabled": true,
      "isStormModeActive": false,
      "createdAt": "2024-03-19T14:55:10.493Z"
    }
  }
}
KeyDescription
deviceIdThe unique identifier for the device.
workspaceIdThe ID of the workspace associated with the device.
organizationIdThe ID of the organization associated with the device.
updatedAtThe timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt.
createdAtThe date and time when the device was created.
manufacturer.slugThe human-readable identifier of the manufacturer of the device.
manufacturer.displayNameThe display name of the manufacturer of the device.
deviceModel.slugThe human-readable identifier of the device model.
deviceModel.displayNameThe display name of the device model.
deviceTypeThe type of device (e.g. battery).
tagsAn array of tags associated with the device.
customer.idThe unique identifier for the customer associated with the device.
customer.referenceIdThe reference ID for the customer associated with the device.
customer.emailThe email address of the customer associated with the device.
customer.firstNameThe first name of the customer associated with the device.
customer.lastNameThe last name of the customer associated with the device.
customer.phoneThe phone number of the customer associated with the device.
site.idThe unique identifier for the site associated with the device.
site.nameThe name of the site associated with the device.
site.address.streetAddress1The first line of the street address of the site associated with the device.
site.address.streetAddress2The second line of the street address of the site associated with the device.
site.address.cityThe city of the site associated with the device.
site.address.stateThe state of the site associated with the device.
site.address.postalCodeThe postal code of the site associated with the device.
site.address.countryThe country of the site associated with the device.
site.longitudeThe longitude of the geographical coordinates of the site associated with the device.
site.latitudeThe latitude of the geographical coordinates of the site associated with the device.
stateAn object containing the current state of the device.
state.idUnique identifier for this state instance.
state.chargeThe current charge of the device in watt-hours.
state.chargePercentageThe current charge level as a percentage.
state.chargingStateThe current charging status of the device.
state.whConsumedThe watt-hours consumed by the device.
state.chargeRateThe rate at which the device is charging or discharging.
state.backupReserveThe percentage of charge reserved for backup.
state.gridStatusThe current status of the grid connection.
state.gridPowerThe power currently drawn from or supplied to the grid.
state.gridEnergyThe energy exchanged with the grid.
state.createdAtThe timestamp when this state update occurred (which may be different than the event timestamp if the state was batched and sent slightly delayed which is the case for some OEMs).

Note, the state object will differ by device type. For example, a battery will have different state data than an inverter. We have details on these differences here. The above example is for a battery.

The lion's share of these events will be triggered from the Device state updates which we get mostly on 5 or 15 minute intervals from the devices, however we are always looking to get tighter interval telemetry data as well as allow for specifying filters on that data. Stay tuned as we continue to add richer functionality to the filtering data to these events.

device.disconnected

Fired whenever a device disconnects from the Texture platform.

{
  "type": "device.disconnected",
  "version": "1.0.0",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "deviceId": "cllzcbw0t00016g7dfua590dd",
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "organizationId": "cm6y391is00000cjlea9361ht",
    "updatedAt": "2024-08-22T15:54:52.013Z",
    "createdAt": "2024-08-22T15:54:52.013Z",
    "manufacturer": {
      "slug": "tesla",
      "displayName": "Tesla"
    },
    "deviceModel": {
      "slug": "tesla:powerwall",
      "displayName": "Powerwall"
    },
    "deviceType": "battery",
    "tags": [
      "battery",
      "powerwall"
    ],
    "customer": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "email": "bjones@texturehq.com",
      "firstName": "Bob",
      "lastName": "Jones",
      "phone": "+15551234567"
    },
    "site": {
      "id": "cllzcbw0t00016g7dfua590dd",
      "name": "Empire State Building",
      "address": {
        "streetAddress1": "20 W 34th St",
        "city": "New York",
        "state": "NY",
        "postalCode": "10118",
        "country": "US"
      },
      "longitude": -73.985428,
      "latitude": 40.748817
    }
  }
}
KeyDescription
deviceIdThe unique identifier for the device.
workspaceIdThe ID of the workspace associated with the device.
organizationIdThe ID of the organization associated with the device.
updatedAtThe timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt.
createdAtThe date and time when the device was created.
manufacturer.slugThe human-readable identifier of the manufacturer of the device.
manufacturer.displayNameThe display name of the manufacturer of the device.
deviceModel.slugThe human-readable identifier of the device model.
deviceModel.displayNameThe display name of the device model.
deviceTypeThe type of device (e.g. battery).
tagsAn array of tags associated with the device.
customer.idThe unique identifier for the customer associated with the device.
customer.referenceIdThe reference ID for the customer associated with the device.
customer.emailThe email address of the customer associated with the device.
customer.firstNameThe first name of the customer associated with the device.
customer.lastNameThe last name of the customer associated with the device.
customer.phoneThe phone number of the customer associated with the device.
site.idThe unique identifier for the site associated with the device.
site.nameThe name of the site associated with the device.
site.address.streetAddress1The first line of the street address of the site associated with the device.
site.address.streetAddress2The second line of the street address of the site associated with the device.
site.address.cityThe city of the site associated with the device.
site.address.stateThe state of the site associated with the device.
site.address.postalCodeThe postal code of the site associated with the device.
site.address.countryThe country of the site associated with the device.
site.longitudeThe longitude of the geographical coordinates of the site associated with the device.
site.latitudeThe latitude of the geographical coordinates of the site associated with the device.

enrollment.approved

Fired whenever an enrollment is approved.

This event is only available for organizations that have opted in to Grid Services. If you are interested in Grid Services, please reach out to us.

{
  "type": "enrollment.approved",
  "version": "0.0.1",
  "key": "8f7d3b2e1a9c6f4e0d5b8a7c2e1f3d5b8a7c2e1f3d5b8a7c2e1f3d5b8a7c2e1f",
  "timestamp": "2024-03-20T14:30:00Z",
  "data": {
    "workspaceId": "clm2n3o4p5q6r7s8t9u0v1w2x",
    "organizationId": "cla1b2c3d4e5f6g7h8i9j0k1l",
    "customer": {
      "id": "cm3excw3h000008jsdjqm42lc",
      "workspaceId": "cm3exhlu0000008mb7j2gay6m",
      "organizationId": "cm3exhssc000108mbcjbi5x8r",
      "email": "jdoe@aol.com",
      "firstName": "Jane",
      "lastName": "Doe",
      "referenceId": "cust-123456-abcdef",
      "updatedAt": "2024-03-20T14:30:00Z",
      "createdAt": "2024-03-20T14:30:00Z"
    },
    "program": {
      "manager": "GridCo Energy Services"
    }
  }
}
KeyDescription
workspaceIdThe ID of the workspace associated with the enrollment.
organizationIdThe ID of the organization associated with the enrollment.
customer.idThe ID of the customer associated with the enrollment.
customer.workspaceIdThe ID of the workspace associated with the customer.
customer.organizationIdThe ID of the organization associated with the customer.
customer.emailThe email address of the customer.
customer.phoneThe phone number of the customer.
customer.firstNameThe first name of the customer.
customer.lastNameThe last name of the customer.
customer.referenceIdThe reference ID for the customer.
customer.updatedAtThe date and time when the customer was last updated.
customer.createdAtThe date and time when the customer was created.
program.managerThe manager of the program associated with the enrollment.

site.created

Fired whenever a site is created on the Texture platform.

{
  "type": "site.created",
  "version": "0.0.1",
  "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87",
  "timestamp": "2024-08-22T15:54:52.013Z",
  "data": {
    "id": "cllzcbw0t00016g7dfua590dd",
    "workspaceId": "cllzcf9xe00066g7dcsxyq1e5",
    "referenceId": "user-123456",
    "updatedAt": "2024-08-22T15:54:52.013Z",
    "createdAt": "2024-08-22T15:54:52.013Z",
    "siteName": "Empire State Building",
    "location": {
      "longitude": -73.985428,
      "latitude": 40.748817
    }
  }
}
KeyDescription
idThe unique identifier for the site.
workspaceIdThe ID of the workspace associated with the site.
referenceIdThe reference ID for the site.
siteNameThe name of the site.
updatedAtThe date and time when the site was last updated.
createdAtThe date and time when the site was created.
location.latitudeThe latitiude of the geographical coordinates of the site.
location.longitudeThe longitude of the geographical coordinates of the site.