> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pointset.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Subscriptions

> How subscriptions define what data you receive and when

A **subscription** is a standing request for data. You specify a city, an entity type, and the fields you want — Pointset handles discovery, enrichment, and delivery automatically.

## Creating a subscription

```json theme={null}
{
  "city": "Bangkok",
  "entity_type": "muay_thai_gym",
  "fields": ["phone", "website", "class_schedule", "drop_in_price"]
}
```

On creation, Pointset immediately:

1. Enqueues a scrape job to discover entities in that city
2. Enqueues strategy generation for any custom fields not already known

## Fields

The `fields` array defines which data points you want on each entity. Standard fields (`phone`, `website`, `rating`, etc.) are available immediately. Custom fields require strategy generation first — see [Field Strategies](/concepts/field-strategies).

You can update the fields on an active subscription at any time. New fields trigger strategy generation if needed.

## Field assessments

Each requested field has an assessment that reflects its resolution status:

| Status           | Meaning                                                   |
| ---------------- | --------------------------------------------------------- |
| `pending`        | Strategy not yet generated                                |
| `resolved`       | Strategy exists and extraction is working                 |
| `low_confidence` | Strategy generated but data is hard to find reliably      |
| `unresolvable`   | No viable source found for this field on this entity type |

Assessments are returned on the subscription object. A `low_confidence` or `unresolvable` field can often be fixed by requesting a more specific field name — for example, `drop_in_price` instead of `price`.

## Data status

| Status         | Meaning                                                   |
| -------------- | --------------------------------------------------------- |
| `pending_data` | First scrape has not completed yet                        |
| `data_ready`   | At least one scrape has completed; entities are available |

## Webhook delivery

Once `data_status` is `data_ready`, Pointset delivers webhook events for each entity linked to your subscription:

* `entity.discovered` — a new entity was found
* `entity.updated` — one or more of your subscribed fields changed
* `entity.removed` — the entity no longer appears in source data

Each event payload includes only the fields you subscribed to — never the full entity blob.

## Refresh cadence

Subscriptions are automatically refreshed monthly. Entities are re-scraped and re-enriched; changed fields trigger `entity.updated` events. You don't need to do anything to keep data current.

## Status lifecycle

| Status      | Meaning                                    |
| ----------- | ------------------------------------------ |
| `active`    | Receiving data normally                    |
| `paused`    | No new events delivered; resumes on update |
| `cancelled` | Permanently stopped; cannot be reactivated |
