Skip to content

Commit d49ffe7

Browse files
committed
splits connection and channels, and cleans up table links
1 parent ae14b42 commit d49ffe7

7 files changed

Lines changed: 72 additions & 61 deletions

File tree

src/pages/docs/ai-transport/pricing.mdx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ The total cost depends on the [token streaming pattern](/docs/ai-transport/token
2424
For how all Ably products count messages, see [message counting](/docs/platform/pricing/message-counting).
2525
</Aside>
2626

27-
## Channels and connections <a id="channels-connections"/>
27+
## Channels <a id="channels"/>
2828

29-
Each channel used for token streaming contributes to your [channel count](/docs/platform/pricing#channels). Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections) per minute of connection time.
29+
Each channel used for token streaming contributes to your [channel count](/docs/platform/pricing#channels).
30+
31+
## Connections <a id="connections"/>
32+
33+
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). A connection-minute is counted for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes.
3034

3135
## Cost optimization <a id="optimization"/>
3236

src/pages/docs/chat/pricing.mdx

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,45 +13,42 @@ The following table shows how Chat operations contribute to your message count:
1313

1414
| Operation | Messages counted |
1515
| --- | --- |
16-
| [Messages](/docs/chat/rooms/messages) ||
17-
| Send message | 1 inbound message |
16+
| [Send message](/docs/chat/rooms/messages) | 1 inbound message |
1817
| Message delivery | 1 outbound message per subscriber |
19-
| Update message | 1 inbound message |
18+
| [Update message](/docs/chat/rooms/messages#update) | 1 inbound message |
2019
| Message update delivery | 1 outbound message per subscriber |
21-
| Delete message | 1 inbound message |
20+
| [Delete message](/docs/chat/rooms/messages#delete) | 1 inbound message |
2221
| Message deletion delivery | 1 outbound message per subscriber |
2322
| [History](/docs/chat/rooms/history) retrieval | 1 message per retrieved message |
24-
| [Typing indicators](/docs/chat/rooms/typing) ||
25-
| Typing keystroke | 1 inbound message; repeats every heartbeat interval (default 10s) |
23+
| [Typing indicator](/docs/chat/rooms/typing) keystroke | 1 inbound message; repeats every heartbeat interval (default 10s) |
2624
| Typing indicator delivery | 1 outbound message per subscriber per heartbeat |
27-
| Typing stop | 1 inbound message |
25+
| Typing indicator stop | 1 inbound message |
2826
| Typing stop delivery | 1 outbound message per subscriber |
29-
| [Reactions](/docs/chat/rooms/reactions) ||
30-
| Room reaction | 1 inbound message |
27+
| [Room reaction](/docs/chat/rooms/reactions) | 1 inbound message |
3128
| Room reaction delivery | 1 outbound message per subscriber |
3229
| [Message reaction](/docs/chat/rooms/message-reactions) send | 1 inbound message |
33-
| [Message reaction](/docs/chat/rooms/message-reactions) delete | 1 inbound message |
30+
| Message reaction delete | 1 inbound message |
3431
| Message reaction summary delivery | 1 outbound message per subscriber; multiple reactions may be rolled up into a single summary |
35-
| [Presence](/docs/chat/rooms/presence) and [occupancy](/docs/chat/rooms/occupancy) ||
36-
| Presence enter | 1 inbound message |
32+
| [Presence](/docs/chat/rooms/presence) enter | 1 inbound message |
3733
| Presence leave | 1 inbound message |
3834
| Presence update | 1 inbound message |
3935
| Presence event delivery | 1 outbound message per presence subscriber |
40-
| Occupancy event | 1 outbound message per subscriber (generated on membership changes, debounced up to 15s) |
41-
| [Moderation](/docs/chat/moderation) ||
42-
| Moderation action | 1 inbound message; triggers a message update or delete which follows standard delivery |
36+
| [Occupancy](/docs/chat/rooms/occupancy) event | 1 outbound message per subscriber (generated on membership changes, debounced up to 15s) |
37+
| [Moderation](/docs/chat/moderation) action | 1 inbound message; triggers a message update or delete which follows standard delivery |
4338

4439
<Aside data-type="further-reading">
4540
For how all Ably products count messages, see [message counting](/docs/platform/pricing/message-counting).
4641
</Aside>
4742

48-
## Rooms, channels, and connections <a id="rooms-connections"/>
43+
## Rooms and channels <a id="channels"/>
4944

50-
Each Chat room maps to a set of underlying Pub/Sub channels. Each room feature (messages, typing, reactions, presence, occupancy) uses its own dedicated channel. The total number of channels used by a room depends on which features are active.
45+
Each Chat [room](/docs/chat/rooms) maps to a set of underlying Pub/Sub channels. Each room feature (messages, typing, reactions, presence, occupancy) uses its own dedicated channel. The total number of channels used by a room depends on which features are active.
5146

52-
Channels contribute to your [channel count](/docs/platform/pricing#channels). The more rooms a client is attached to, and the more features enabled per room, the more channels are consumed.
47+
Channels contribute to your [channel count](/docs/platform/pricing#channels). The more rooms a client is attached to, and the more features enabled per room, the more channels are consumed. [Detach](/docs/chat/rooms#detach) from rooms when they are no longer needed, and [release](/docs/chat/rooms#release) rooms that are no longer in use to reduce your channel count.
5348

54-
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). Ably counts a connection-minute for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes.
49+
## Connections <a id="connections"/>
50+
51+
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). A connection-minute is counted for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes. Close connections when the client is done to stop accruing connection minutes.
5552

5653
## Cost optimization <a id="optimization"/>
5754

@@ -63,10 +60,6 @@ Increase the `heartbeatThrottleMs` [room option](/docs/chat/rooms#typing) to red
6360

6461
[Server-side batching](/docs/messages/batch#server-side) groups messages into single deliveries. Use this for high-throughput rooms where slight delay is acceptable.
6562

66-
### Detach from unused rooms
67-
68-
[Detach](/docs/chat/rooms#detach) from rooms when they are no longer needed, and [release](/docs/chat/rooms#release) rooms that are no longer in use. This reduces your channel count and connection usage. Close connections when the client is done to stop accruing connection minutes.
69-
7063
### Use occupancy instead of presence
7164

7265
Use [occupancy](/docs/chat/rooms/occupancy) instead of [presence](/docs/chat/rooms/presence) when you only need member counts, not individual identities. This avoids the n-squared presence event fan-out. For example, 200 members joining and leaving generates approximately **80,400 messages**. See [large-scale presence sets](/docs/presence-occupancy/presence#large-presence) for details.

src/pages/docs/liveobjects/pricing.mdx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ The following table shows how LiveObjects operations contribute to your message
1616
| Operation | Messages counted |
1717
| --- | --- |
1818
| [LiveMap](/docs/liveobjects/map) set or remove | 1 inbound message per operation |
19-
| [LiveMap](/docs/liveobjects/map) create (shallow) | 2 inbound messages (create + assign) |
19+
| LiveMap create (shallow) | 2 inbound messages (create + assign) |
2020
| [LiveCounter](/docs/liveobjects/counter) increment or decrement | 1 inbound message |
21-
| [LiveCounter](/docs/liveobjects/counter) create | 2 inbound messages (create + assign) |
21+
| LiveCounter create | 2 inbound messages (create + assign) |
2222
| ObjectMessage delivery | 1 outbound message per connected client |
2323
| [Synchronization](#synchronization) | 1 message per object synchronized |
2424
| [REST API](#rest-api) fetch | 1 message per object in response |
@@ -30,11 +30,13 @@ Nested object creation generates additional messages for each nested object.
3030
For how all Ably products count messages, see [message counting](/docs/platform/pricing/message-counting).
3131
</Aside>
3232

33-
## Channels and connections <a id="channels-connections"/>
33+
## Channels <a id="channels"/>
3434

35-
Each LiveObjects channel contributes to your [channel count](/docs/platform/pricing#channels). Ably bills [connection minutes](/docs/platform/pricing#connections) per minute of connection time for each connected client.
35+
Each LiveObjects channel contributes to your [channel count](/docs/platform/pricing#channels). Subscribing to updates does not affect the number of messages received by a client. Any client attached to a channel with the `object-subscribe` capability automatically receives all object messages for that channel. Subscribing to updates on an object adds a listener that is called whenever the client receives updates for that object.
3636

37-
Subscribing to updates does not affect the number of messages received by a client. Any client attached to a channel with the `object-subscribe` capability automatically receives all object messages for that channel. Subscribing to updates on an object adds a listener that is called whenever the client receives updates for that object.
37+
## Connections <a id="connections"/>
38+
39+
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). A connection-minute is counted for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes.
3840

3941
## Cost optimization <a id="optimization"/>
4042

src/pages/docs/livesync/pricing.mdx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,13 @@ For example, if the database connector publishes 1 update and 3 clients are subs
2222
For how all Ably products count messages, see [message counting](/docs/platform/pricing/message-counting).
2323
</Aside>
2424

25-
## Channels and connections <a id="channels-connections"/>
25+
## Channels <a id="channels"/>
2626

27-
Each channel that the database connector publishes to contributes to your [channel count](/docs/platform/pricing#channels). Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections) per minute of connection time.
27+
Each channel that the database connector publishes to contributes to your [channel count](/docs/platform/pricing#channels).
28+
29+
## Connections <a id="connections"/>
30+
31+
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). A connection-minute is counted for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes.
2832

2933
## Cost optimization <a id="optimization"/>
3034

src/pages/docs/platform/pricing/message-counting.mdx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,24 @@ The following table shows how [Pub/Sub](/docs/pub-sub) operations contribute to
4040
| --- | --- |
4141
| [Publish](/docs/channels/messages#publish) | 1 inbound message |
4242
| Message delivery | 1 outbound message per subscriber |
43-
| [Presence enter](/docs/presence-occupancy/presence) | 1 inbound message |
44-
| [Presence leave](/docs/presence-occupancy/presence) | 1 inbound message |
45-
| [Presence update](/docs/presence-occupancy/presence) | 1 inbound message |
43+
| [Presence](/docs/presence-occupancy/presence) enter | 1 inbound message |
44+
| Presence leave | 1 inbound message |
45+
| Presence update | 1 inbound message |
4646
| Presence event delivery | 1 outbound message per presence subscriber |
4747
| [Persistence](/docs/storage-history/storage) storage | 1 additional message per stored message |
4848
| [History](/docs/storage-history/history) retrieval | 1 message per retrieved message |
4949
| [Integration](/docs/platform/integrations) delivery | 1 outbound message per integration target |
50-
| [Inbound integration](/docs/platform/integrations#inbound) publish | 1 inbound message |
50+
| Inbound [integration](/docs/platform/integrations#inbound) publish | 1 inbound message |
5151
| [Rewind](/docs/channels/options/rewind) on attach | 1 message per rewound message (up to 100) |
5252
| [Push notification](/docs/push) delivery | 1 message per delivered notification |
5353
| [Presence REST](/docs/presence-occupancy/presence) query | 1 message per member returned |
5454
| [Batch presence](/docs/presence-occupancy/presence) request | 1 message per member across all queried channels |
5555
| [Annotation](/docs/messages/annotations) publish | 1 inbound message |
56-
| [Annotation](/docs/messages/annotations) delete | 1 inbound message |
56+
| Annotation delete | 1 inbound message |
5757
| [Annotation summary](/docs/messages/annotations#annotation-summaries) delivery | 1 outbound message per subscriber; multiple annotations may be rolled up into a single summary |
5858
| [Lifecycle event](/docs/metadata-stats/metadata) (`[meta]connection.lifecycle`, `[meta]channel.lifecycle`) | 1 message per event |
5959
| [`[meta]stats:minute`](/docs/metadata-stats/metadata) event | 1 message per event |
60-
| [`[meta]log`](/docs/metadata-stats/metadata) subscription | Not counted |
60+
| `[meta]log` subscription | Not counted |
6161

6262
For Pub/Sub-specific cost optimization strategies, see [Pub/Sub pricing](/docs/pub-sub/pricing).
6363

@@ -76,16 +76,16 @@ The [Chat SDK](/docs/chat) is built on top of [Pub/Sub](/docs/pub-sub). All Chat
7676
| [History](/docs/chat/rooms/history) retrieval | 1 message per retrieved message |
7777
| [Typing indicator](/docs/chat/rooms/typing) keystroke | 1 inbound message; repeats every heartbeat interval (default 10s) |
7878
| Typing indicator delivery | 1 outbound message per subscriber per heartbeat |
79-
| [Typing indicator](/docs/chat/rooms/typing) stop | 1 inbound message |
79+
| Typing indicator stop | 1 inbound message |
8080
| Typing stop delivery | 1 outbound message per subscriber |
8181
| [Room reaction](/docs/chat/rooms/reactions) | 1 inbound message |
8282
| Room reaction delivery | 1 outbound message per subscriber |
8383
| [Message reaction](/docs/chat/rooms/message-reactions) send | 1 inbound message |
84-
| [Message reaction](/docs/chat/rooms/message-reactions) delete | 1 inbound message |
84+
| Message reaction delete | 1 inbound message |
8585
| Message reaction summary delivery | 1 outbound message per subscriber; multiple reactions may be rolled up into a single summary |
86-
| [Presence enter](/docs/chat/rooms/presence) | 1 inbound message |
87-
| [Presence leave](/docs/chat/rooms/presence) | 1 inbound message |
88-
| [Presence update](/docs/chat/rooms/presence) | 1 inbound message |
86+
| [Presence](/docs/chat/rooms/presence) enter | 1 inbound message |
87+
| Presence leave | 1 inbound message |
88+
| Presence update | 1 inbound message |
8989
| Presence event delivery | 1 outbound message per presence subscriber |
9090
| [Occupancy](/docs/chat/rooms/occupancy) event | 1 outbound message per subscriber (generated on membership changes, debounced up to 15s) |
9191
| [Moderation](/docs/chat/moderation) action | 1 inbound message; triggers a message update or delete which follows standard delivery |
@@ -99,9 +99,9 @@ For Chat-specific cost optimization strategies, see [Chat pricing](/docs/chat/pr
9999
| Operation | Messages counted |
100100
| --- | --- |
101101
| [LiveMap](/docs/liveobjects/map) set or remove | 1 inbound message per operation |
102-
| [LiveMap](/docs/liveobjects/map) create (shallow) | 2 inbound messages (create + assign) |
102+
| LiveMap create (shallow) | 2 inbound messages (create + assign) |
103103
| [LiveCounter](/docs/liveobjects/counter) increment or decrement | 1 inbound message |
104-
| [LiveCounter](/docs/liveobjects/counter) create | 2 inbound messages (create + assign) |
104+
| LiveCounter create | 2 inbound messages (create + assign) |
105105
| ObjectMessage delivery | 1 outbound message per connected client |
106106
| [Synchronization](/docs/liveobjects/pricing#synchronization) | 1 message per object synchronized |
107107
| [REST API](/docs/liveobjects/pricing#rest-api) fetch | 1 message per object in response |
@@ -123,10 +123,10 @@ The [Spaces SDK](/docs/spaces) is built on top of [Pub/Sub](/docs/pub-sub) chann
123123
| Space event delivery | 1 outbound message per subscriber |
124124
| [Set location](/docs/spaces/locations#set) | 1 inbound message |
125125
| Location event delivery | 1 outbound message per subscriber |
126-
| [Set cursor position](/docs/spaces/cursors#set) | 1 inbound message per batch (default batch interval 25ms) |
126+
| [Set cursor](/docs/spaces/cursors#set) position | 1 inbound message per batch (default batch interval 25ms) |
127127
| Cursor event delivery | 1 outbound message per subscriber |
128-
| [Lock acquire](/docs/spaces/locking#acquire) | 1 inbound message |
129-
| [Lock release](/docs/spaces/locking#release) | 1 inbound message |
128+
| [Acquire lock](/docs/spaces/locking#acquire) | 1 inbound message |
129+
| [Release lock](/docs/spaces/locking#release) | 1 inbound message |
130130
| Lock event delivery | 1 outbound message per subscriber |
131131

132132
Live cursors use a [separate channel](/docs/spaces/cursors#foundations) from other space features due to their high update frequency. Registering multiple subscription listeners for the same event does not increase your message count, as these are [client-side filtered events](/docs/spaces/space#subscribe).

src/pages/docs/pub-sub/pricing.mdx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,36 @@ The following table shows how Pub/Sub operations contribute to your message coun
1515
| --- | --- |
1616
| [Publish](/docs/channels/messages#publish) | 1 inbound message |
1717
| Message delivery | 1 outbound message per subscriber |
18-
| [Presence enter](/docs/presence-occupancy/presence) | 1 inbound message |
19-
| [Presence leave](/docs/presence-occupancy/presence) | 1 inbound message |
20-
| [Presence update](/docs/presence-occupancy/presence) | 1 inbound message |
18+
| [Presence](/docs/presence-occupancy/presence) enter | 1 inbound message |
19+
| Presence leave | 1 inbound message |
20+
| Presence update | 1 inbound message |
2121
| Presence event delivery | 1 outbound message per presence subscriber |
2222
| [Persistence](/docs/storage-history/storage) storage | 1 additional message per stored message |
2323
| [History](/docs/storage-history/history) retrieval | 1 message per retrieved message |
2424
| [Integration](/docs/platform/integrations) delivery | 1 outbound message per integration target |
25-
| [Inbound integration](/docs/platform/integrations#inbound) publish | 1 inbound message |
25+
| Inbound [integration](/docs/platform/integrations#inbound) publish | 1 inbound message |
2626
| [Rewind](/docs/channels/options/rewind) on attach | 1 message per rewound message (up to 100) |
2727
| [Push notification](/docs/push) delivery | 1 message per delivered notification |
2828
| [Presence REST](/docs/presence-occupancy/presence) query | 1 message per member returned |
2929
| [Batch presence](/docs/presence-occupancy/presence) request | 1 message per member across all queried channels |
3030
| [Annotation](/docs/messages/annotations) publish | 1 inbound message |
31-
| [Annotation](/docs/messages/annotations) delete | 1 inbound message |
31+
| Annotation delete | 1 inbound message |
3232
| [Annotation summary](/docs/messages/annotations#annotation-summaries) delivery | 1 outbound message per subscriber; multiple annotations may be rolled up into a single summary |
3333
| [Lifecycle event](/docs/metadata-stats/metadata) (`[meta]connection.lifecycle`, `[meta]channel.lifecycle`) | 1 message per event |
3434
| [`[meta]stats:minute`](/docs/metadata-stats/metadata) event | 1 message per event |
35-
| [`[meta]log`](/docs/metadata-stats/metadata) subscription | Not counted |
35+
| `[meta]log` subscription | Not counted |
3636

3737
<Aside data-type="further-reading">
3838
For how all Ably products count messages, see [message counting](/docs/platform/pricing/message-counting).
3939
</Aside>
4040

41-
## Channels and connection minutes <a id="channels-connections"/>
41+
## Channels <a id="channels"/>
4242

43-
[Channels](/docs/channels) are the unit of message distribution. Each channel you use contributes to your [channel count](/docs/platform/pricing#channels). Ably bills [connection minutes](/docs/platform/pricing#connections) per minute of connection time for each connected client.
43+
[Channels](/docs/channels) are the unit of message distribution. Each channel you use contributes to your [channel count](/docs/platform/pricing#channels). Ably includes channels with each package and charges for additional channels beyond the included allowance.
44+
45+
## Connections <a id="connections"/>
46+
47+
Ably bills each connected client for [connection minutes](/docs/platform/pricing#connections). A connection-minute is counted for every minute a client maintains an open connection, regardless of activity. Clients that remain connected but idle still accrue connection minutes.
4448

4549
## Cost optimization <a id="optimization"/>
4650

0 commit comments

Comments
 (0)