Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions fundamentals/polls.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -327,3 +327,10 @@ A sample response for the results is as follows:
</Tab>

</Tabs>


## Notifications

<Card title="Notification templates" href="/notifications/templates-and-sounds#4-poll-message-templates">
Customize the push, email, and SMS notification templates for poll messages.
</Card>
7 changes: 7 additions & 0 deletions fundamentals/reminders.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -345,3 +345,10 @@ The user will receive reminders from a special user - `cc_reminder_bot` - that w
These reminders are sent as messages with `category: custom` and `type: extension_reminders`. The `customData` object will have an `about` field that the user had mentioned while setting the reminder.

Learn more about [Custom messages listener](/sdk/javascript/receive-message#real-time-messages) for receiving reminders.


## Notifications

<Card title="Notification templates" href="/notifications/templates-and-sounds#5-reminder-message-templates">
Customize the push, email, and SMS notification templates for reminder messages.
</Card>
43 changes: 38 additions & 5 deletions notifications/templates-and-sounds.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -102,39 +102,72 @@ The sender's name lives at `message.data.entities.sender.entity.name`, so use `{

Ideally, the "Body (Fallback)" value should not contain any placeholders to prevent additional resolution failures.

#### 4. Interactive form templates
#### 4. Poll message templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | Poll: `{{message.data.text}}` | New message |
| Body (Fallback) | New message | New message |

Applies to messages with `category: "custom"` and `type: "extension_poll"`. Poll templates use the same structure as custom message templates and can be customized independently — for example, setting the privacy body to "New poll" instead of the generic fallback.

**Note:** The "Body (Fallback)" value is utilized when any placeholders within the "Body" fail to resolve to an appropriate substitution value.

**For example**, if `{{message.data.text}}` in the aforementioned scenario evaluates to `null` or `undefined`, the "Body (Fallback)" value will be utilized.

Ideally, the "Body (Fallback)" value should not contain any placeholders to prevent additional resolution failures.

#### 5. Reminder message templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | `{{message.data.text}}` | New message |
| Body (Fallback) | New message | New message |

Applies to messages with `category: "custom"` and `type: "extension_reminders"`. Reminder templates use the same structure as custom message templates and can be customized independently — for example, setting the privacy body to "New reminder" instead of the generic fallback.

**Note:** The "Body (Fallback)" value is utilized when any placeholders within the "Body" fail to resolve to an appropriate substitution value.

**For example**, if `{{message.data.text}}` in the aforementioned scenario evaluates to `null` or `undefined`, the "Body (Fallback)" value will be utilized.

Ideally, the "Body (Fallback)" value should not contain any placeholders to prevent additional resolution failures.

#### 6. Interactive form templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | `{{data.interactiveData.title}}` | New message |

#### 5. Interactive card templates
#### 7. Interactive card templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | `{{message.data.interactiveData.text}}` | New message |

#### 6. Interactive scheduler templates
#### 8. Interactive scheduler templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | New invite | New invite |

#### 7. Custom Interactive message templates
#### 9. Custom Interactive message templates

| Template for | Default template values | Privacy template values |
| ------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Title (One-on-one) | `{{message.data.entities.sender.entity.name}}` | `{{message.data.entities.sender.entity.name}}` |
| Title (Group) | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` | `{{message.data.entities.sender.entity.name}}` @ `{{message.data.entities.receiver.entity.name}}` |
| Body | New message | New message |


### Dashboard configuration

Choose how templates apply to users: **default, privacy, or default with user override** (Privacy Setting dropdown in the dashboard).
Expand Down