# Play.applied

URL: /business/events/Play.applied · Id: `event:Play.applied`

> Emitted each time a Play is applied.

[Play.apply](/business/nouns/play/apply) emits `Play.applied` when it completes on a [Play](/business/nouns/play).

| Property | Value |
| --- | --- |
| Emitted by | [Play.apply](/business/nouns/play/apply) |
| Noun | [Play](/business/nouns/play) |
| Wakes | None. |

### Payload
Each delivery is an [Event](/business/nouns/event) record. `data` holds what [Play.apply](/business/nouns/play/apply) returns.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | `Play.applied`. |
| `at` | `datetime` | Yes | When it happened. |
| `seq` | `integer` | No | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. |
| `data` | `json` | Yes | The Thing as the Action left it. |
| `data.experiment` | [Experiment](/business/nouns/experiment) | Yes | The Experiment that measures the rollout. |
| `data.play` | [Play](/business/nouns/play) | Yes | The Play applied. |
| `data.play.family` | `string` | Yes | The job it does, such as `demand`, `retention`, or `pricing`. |
| `data.play.cost` | `money` | No | What one run costs. |
| `data.play.cohort` | `json` | No | The Portfolio query a Studio rolls it out to. |
| `data.play.from` | `string` | No | Lineage: the slot it compiles from, as `Hypothesis#<slot>@v<version>`. |
| `data.play.spend` | `money` | No | Media, data and creative spend posted against the Play. |
| `data.play.workerCost` | `money` | No | What the Workers running it cost: model tokens, compute, upstream calls and human minutes. |
| `data.play.customersAcquired` | `integer` | No | Outside Customers whose Acquisition names the Play. |
| `data.play.outsideRevenue` | `money` | No | Revenue collected from those Customers, net of refunds. |
| `data.play.margin` | `money` | No | Outside revenue less spend, Worker cost and the cost to serve those Customers. |
| `data.play.paybackDays` | `integer` | No | Days from the first spend until margin covers spend and Worker cost; empty until it does. |

### Example
```json
{
  "$id": "https://api.sb/tutorloop.com/events/event_1",
  "$type": "Event",
  "name": "Play.applied",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "experiment": {
      "$id": "https://api.sb/tutorloop.com/experiments/experiment_1",
      "$type": "Experiment",
      "variants": {}
    },
    "play": {
      "$id": "https://api.sb/tutorloop.com/plays/play_1",
      "$type": "Play",
      "family": "demand",
      "cost": {
        "amount": 60,
        "currency": "USD"
      },
      "cohort": {},
      "from": "Hypothesis#approach@v1",
      "spend": {
        "amount": 60,
        "currency": "USD"
      },
      "workerCost": {
        "amount": 60,
        "currency": "USD"
      },
      "customersAcquired": 1,
      "outsideRevenue": {
        "amount": 60,
        "currency": "USD"
      },
      "margin": {
        "amount": 60,
        "currency": "USD"
      },
      "paybackDays": 1
    }
  },
  "seq": 1
}
```