# Marketing (/entities/marketing)



Acquire users, run campaigns, segment audiences.

Campaign [#campaign]

Marketing initiatives — launches, drips, content pushes.

```typescript
import { Noun } from 'digital-objects'

export const Campaign = Noun('Campaign', {
  name: 'string!',
  slug: 'string##',
  description: 'string',
  type: 'Email | Social | Content | Event | Paid | Webinar | Referral',
  status: 'Draft | Scheduled | Active | Paused | Completed | Cancelled',
  startDate: 'date',
  endDate: 'date',
  launchedAt: 'datetime',
  budget: 'number',
  actualCost: 'number',
  currency: 'string',
  targetLeads: 'number',
  targetRevenue: 'number',
  leads: '<- Lead.campaign[]',
  actualLeads: 'number',
  actualRevenue: 'number',
  roi: 'number',
  landingPageUrl: 'string',
  utmSource: 'string',
  utmMedium: 'string',
  utmCampaign: 'string',
  owner: '-> Contact',
  launch: 'Launched',
  pause: 'Paused',
  complete: 'Completed',
})
```

| Verb       | Event       | Description        |
| ---------- | ----------- | ------------------ |
| `launch`   | `Launched`  | Start the campaign |
| `pause`    | `Paused`    | Temporarily stop   |
| `complete` | `Completed` | Mark as finished   |

Segment [#segment]

Audience groups with dynamic or static membership.

```typescript
export const Segment = Noun('Segment', {
  name: 'string!',
  description: 'string',
  criteria: 'string',
  organization: '-> Organization',
  memberCount: 'number',
  isDynamic: 'string',
})
```

Form [#form]

Data collection — sign-up, waitlist, contact us.

```typescript
export const Form = Noun('Form', {
  name: 'string!',
  description: 'string',
  fields: 'string',
  organization: '-> Organization',
  status: 'Draft | Active | Archived',
  submissionCount: 'number',
  publish: 'Published',
  archive: 'Archived',
})
```

| Verb      | Event       | Description      |
| --------- | ----------- | ---------------- |
| `publish` | `Published` | Make form active |
| `archive` | `Archived`  | Archive the form |
