> For the complete documentation index, see [llms.txt](https://docs.oomus.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.oomus.org/features/distribution.md).

# Multichannel distribution

Oomus CampaignID makes it possible to distribute digital health cards via three complementary channels: **WhatsApp**, **SMS** and **Google Wallet**. Distribution can be triggered from the interface or via the API, for each beneficiary individually or in bulk.

***

## Channel comparison

| Channel           | Technology            | Coverage           | Format            | Offline possible         |
| ----------------- | --------------------- | ------------------ | ----------------- | ------------------------ |
| **WhatsApp**      | Meta Graph API v25.0  | Africa + worldwide | PNG image + text  | No (requires connection) |
| **SMS**           | Orange SMS API OAuth2 | West Africa        | Short link + text | No                       |
| **Google Wallet** | Google Wallet API     | Android + Web      | Generic QR pass   | Yes (downloaded pass)    |

***

## WhatsApp

### Technology

Oomus CampaignID uses the **Meta Graph API v25.0** for sending WhatsApp Business messages. Each send includes:

* The generated card PNG image
* A customizable message (including the beneficiary's first name, the program name, and the card number)
* A link to the verification portal (optional)

### Prerequisites

To use WhatsApp distribution, your program must have:

* A **verified Meta Business account** verified
* A **WhatsApp Business phone number** registered with Meta
* An API key (Meta Graph Token) configured in the Oomus integration settings

### How it works

1. Oomus CampaignID retrieves the beneficiary's card PNG image
2. The message is personalized (name, program, card code)
3. The request is sent to Meta Graph API v25.0
4. The delivery status is recorded (sent / delivered / read / failed)
5. Logs are available in the Distribution tab

### Example of individual sending via API

```bash
curl -X POST https://api.oomus.health/dhis2/send-card \
  -H "Authorization: Bearer <YOUR_TOKEN>" \\
  -H "Content-Type: application/json" \\
  -d '{
    "enrollment_id": "xyz123",
    "channel": "whatsapp",
    "phone_number": "+221771234567",
    "message": "Hello {first_name}, here is your vaccination card. Keep this message."
  }'
```

### Sending logs

Each WhatsApp message sent is logged with:

* Send timestamp
* Phone number (partially masked in logs)
* Delivery status (sent / delivered / read / failed)
* Meta message ID
* Beneficiary ID (without PII)

***

## SMS

### Technology

Oomus CampaignID uses the**Orange SMS API OAuth2** for sending SMS in West Africa.

### Geographic coverage

The SMS service is optimized for West African countries covered by Orange:

| Country       | Code | Coverage        |
| ------------- | ---- | --------------- |
| Senegal       | SN   | Orange Senegal  |
| Côte d'Ivoire | CI   | Orange CI       |
| Mali          | ML   | Orange Mali     |
| Burkina Faso  | BF   | Orange BF       |
| Guinea        | GN   | Orange Guinea   |
| Cameroon      | CM   | Orange Cameroon |

> For countries outside Orange coverage, contact the Oomus team to discuss integration with a local operator.

### SMS content

The SMS contains:

* A short personalized message (60–160 characters)
* A short link to the online verification portal or to download the card

SMS example:

```
Hello Aminata, your EPI vaccination card is available:
https://v.oomus.health/c/DKR-VAC-9XQ7LM2A
```

### Example of bulk SMS sending (from DHIS2)

Bulk sending is triggered from the **Distribution** tab of the DHIS2 view, by selecting the beneficiaries and the SMS channel. Phone numbers are automatically extracted from mapped DHIS2 attributes.

***

## Google Wallet

### What is a Google Wallet pass?

A **Google Wallet Generic Pass** is a digital card stored in the Google Wallet app on Android or accessible via a web browser. It can be used without an Internet connection once downloaded.

### Pass content

Each pass generated by Oomus CampaignID includes:

| Field                | Value                                       |
| -------------------- | ------------------------------------------- |
| **QR code**          | Cryptographic verification token            |
| **Beneficiary name** | First Name + Last Name (from campaign data) |
| **Program**          | Health program name                         |
| **Issue date**       | Card generation date                        |
| **Expiration date**  | If configured (optional)                    |
| **Logo**             | Program logo (optional)                     |
| **Color**            | Program color                               |

### Single issuance

```bash
curl -X GET "https://api.oomus.health/dhis2/google-wallet/{enrollment_id}" \
  -H "Authorization: Bearer <YOUR_TOKEN>"
```

**Response:**

```json
{
  "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGci...",
  "jwt_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "enrollment_id": "xyz123",
  "valid_until": "2027-05-15T00:00:00Z"
}
```

The beneficiary clicks on `wallet_url` to add the pass to their Google Wallet.

### Bulk issuance (up to 100 cards)

```bash
curl -X POST "https://api.oomus.health/dhis2/google-wallet/bulk" \\
  -H "Authorization: Bearer <YOUR_TOKEN>" \\
  -H "Content-Type: application/json" \\
  -d '{
    "enrollment_ids": ["xyz123", "abc456", "def789"],
    "programme_uid": "P3jJH5Tu5VC"
  }'
```

**Response:**

```json
{
  "batch_id": "batch_01HXYZ",
  "total": 3,
  "wallet_links": [
    {
      "enrollment_id": "xyz123",
      "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGci..."
    },
    ...
  ]
}
```

> Bulk issuance is limited to **100 passes per request**. For larger volumes, make several requests or use the CSV export from the interface.

***

## Distribution logs

Each send (regardless of channel) is logged in the dashboard:

* **Access** : Dashboard > Distribution > Logs
* **Filters** : by channel, date, status, campaign, beneficiary (by ID, without displaying PII)
* **Statuses** : `sent`, `delivered`, `failed`, `pending`
* **Export** : CSV available for audit

***

## Next steps

* [WhatsApp & SMS Guide](/integrations/messaging.md) — Integration configuration
* [Google Wallet Guide](/integrations/google-wallet.md) — Prerequisites and configuration
* [DHIS2 Integration](/features/dhis2-integration.md) — Distribute from DHIS2


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.oomus.org/features/distribution.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
