# How messaging works

Source: https://kirora.io/docs/guides/messaging/overview

The channels Kirora sends on, the three ways a message goes out, and the checks every message passes.

Messaging is how Kirora reaches your contacts: **email** and **push notifications** to their phones and browsers. You set each channel up once, write messages in the dashboard, and send them from campaigns, journeys or your own app.

## The channels

| Channel | What you set up first | What a contact needs |
| --- | --- | --- |
| **Email** | A verified sending domain and a sender | An email address and, for marketing, email consent |
| **Push notifications** | A push app for your iOS app, Android app or website | A device or browser your app registered, and push consent, even for transactional push |

Each channel has its own guides:

- **Email**: [get started](https://kirora.io/docs/guides/messaging/email/get-started), [create an email](https://kirora.io/docs/guides/messaging/email/create-an-email), [send it](https://kirora.io/docs/guides/messaging/email/send-email), [read its statuses](https://kirora.io/docs/guides/messaging/email/email-statuses) and [fix problems](https://kirora.io/docs/guides/messaging/email/troubleshoot-email).
- **Push notifications**: [get started](https://kirora.io/docs/guides/messaging/push/get-started), [create a push notification](https://kirora.io/docs/guides/messaging/push/create-a-push-notification), [send it](https://kirora.io/docs/guides/messaging/push/send-push), [test it](https://kirora.io/docs/guides/messaging/push/test-push), [read its statuses](https://kirora.io/docs/guides/messaging/push/push-statuses), [follow best practices](https://kirora.io/docs/guides/messaging/push/push-best-practices) and [fix problems](https://kirora.io/docs/guides/messaging/push/troubleshoot-push).

## Three ways a message goes out

| Aspect | Campaigns | Journeys | Transactional |
| --- | --- | --- | --- |
| **What it is** | One message to all contacts, lists or a segment, now or at a set time | Messages sent automatically when a contact does something or joins an audience | One message to one person, sent by your app, such as a receipt or a sign-in code |
| **Who starts it** | You, from the dashboard | The journey's trigger | Your server, through the API |
| **Needs marketing consent** | Yes | Yes, unless a step is marked transactional email | Email: no. Push: yes, push consent |
| **Quiet hours and message limits** | Apply | Apply | Don't apply |

All three send email and push; a journey does it in a send step. A campaign can send on email, push or both. With both, each contact gets the message on every channel they can receive. See [Create a campaign](https://kirora.io/docs/guides/campaigns/create-a-campaign) and [Build a journey](https://kirora.io/docs/guides/journeys/build-a-journey). Transactional messages are sent by your developer; the **Transactional** page in the dashboard shows their delivery report and history.

## Checks every message passes

Just before a message goes out, Kirora checks the contact again, so a change made after you scheduled still counts:

- **Consent** for that channel. Marketing email needs email consent; transactional email doesn't. Every push notification needs push consent, transactional ones included. Allowing notifications on a phone isn't push consent, and email consent doesn't cover push. See [Consent, per channel](https://kirora.io/docs/guides/contacts/consent-and-unsubscribes#consent-per-channel).
- **Topics**: a contact who left the message's topic is skipped. See [Topics](https://kirora.io/docs/guides/contacts/consent-and-unsubscribes#topics-let-people-opt-out-of-some-messages).
- **Suppression**: an address that bounced, complained, unsubscribed or was suppressed by hand gets no marketing email.
- **The channel is ready**: a verified sender domain for email, a ready push app for push.
- **Sending rules**: quiet hours and message limits, for campaigns and journeys.

A contact who fails the consent, topic, suppression or channel check is **skipped**, with the reason recorded. Quiet hours hold a message until they end, and message limits skip it or hold it until there's room, as the campaign chooses. Each channel's statuses page explains every status and reason.

## Sending rules

**Settings › Messaging › Sending rules** holds the rules that apply to campaign and journey messages on both channels. Every member can read them; admins and the owner change them.

- **Default sender**: who new emails are from.
- **Message limits**: how many marketing messages one contact can get in a period. A campaign chooses whether to apply them.
- **Hold marketing overnight**: marketing email and push due in quiet hours wait until they end, in the contact's time zone, or the workspace's for contacts without one. A push or email sent directly through the API isn't held.
- **Add UTM tags to links in marketing email**, so your analytics can tell which campaign brought each visit.

## Next steps

- [Email: get started](https://kirora.io/docs/guides/messaging/email/get-started)
- [Push notifications: get started](https://kirora.io/docs/guides/messaging/push/get-started)
- [Consent and unsubscribes](https://kirora.io/docs/guides/contacts/consent-and-unsubscribes)