# Messaging Services

Sending a high volume of messages in the United States and globally quickly becomes complex. As the complexity of your messaging application grows, it's helpful to organize your account and message logs into separate Messaging Services using Twilio Programmable Messaging.

Think of a Messaging Service as a higher-level bundling of messaging functionality around a common set of senders, features, and configuration. The same settings and feature configuration apply to all of the senders (such as long code numbers, short codes, and toll-free numbers) in the Messaging Service's pool.

You can manage and configure a Messaging Service's features through the [Console](https://www.twilio.com/console/sms/services) or the [REST API](/docs/messaging/api/service-resource).

For each Messaging Service you add through the Console, configure its [incoming message handling](#incoming-messages-handling) and [status callback URL](/docs/messaging/api/service-resource). These can be configured in the **Integration** section of your messaging service's settings.

Associate one or more phone numbers or [short codes](/docs/glossary/what-is-a-short-code) with the service to send messages. You can add additional messaging features (described below) to your application through your newly configured messaging service.

## Send a message with a Messaging Service

If you use a messaging service to send a message, your request to Twilio will look very similar to [sending an SMS with the REST API](/docs/messaging/api/message-resource#send-an-sms-message). However, instead of including a `From` phone number, you'll include a `MessagingServiceSid`. Twilio will then choose one of the phone numbers in your Messaging Service's sender pool based on your service's configuration.

The following example shows how to send a message with a Messaging Service:

Send a Message with a Messaging Service

```js
// Download the helper library from https://www.twilio.com/docs/node/install
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = twilio(accountSid, authToken);

async function createMessage() {
  const message = await client.messages.create({
    body: "Revenge of the Sith was clearly the best of the prequel trilogy.",
    messagingServiceSid: "MG9752274e9e519418a7406176694466fa",
    to: "+441632960675",
  });

  console.log(message.body);
}

createMessage();
```

```python
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ["TWILIO_ACCOUNT_SID"]
auth_token = os.environ["TWILIO_AUTH_TOKEN"]
client = Client(account_sid, auth_token)

message = client.messages.create(
    body="Revenge of the Sith was clearly the best of the prequel trilogy.",
    messaging_service_sid="MG9752274e9e519418a7406176694466fa",
    to="+441632960675",
)

print(message.body)
```

```csharp
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using System.Threading.Tasks;

class Program {
    public static async Task Main(string[] args) {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var message = await MessageResource.CreateAsync(
            body: "Revenge of the Sith was clearly the best of the prequel trilogy.",
            messagingServiceSid: "MG9752274e9e519418a7406176694466fa",
            to: new Twilio.Types.PhoneNumber("+441632960675"));

        Console.WriteLine(message.Body);
    }
}
```

```java
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.type.PhoneNumber;
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;

public class Example {
    // Find your Account SID and Auth Token at twilio.com/console
    // and set the environment variables. See http://twil.io/secure
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Message message = Message
                              .creator(new com.twilio.type.PhoneNumber("+441632960675"),
                                  "MG9752274e9e519418a7406176694466fa",
                                  "Revenge of the Sith was clearly the best of the prequel trilogy.")
                              .create();

        System.out.println(message.getBody());
    }
}
```

```go
// Download the helper library from https://www.twilio.com/docs/go/install
package main

import (
	"fmt"
	"github.com/twilio/twilio-go"
	api "github.com/twilio/twilio-go/rest/api/v2010"
	"os"
)

func main() {
	// Find your Account SID and Auth Token at twilio.com/console
	// and set the environment variables. See http://twil.io/secure
	// Make sure TWILIO_ACCOUNT_SID and TWILIO_AUTH_TOKEN exists in your environment
	client := twilio.NewRestClient()

	params := &api.CreateMessageParams{}
	params.SetBody("Revenge of the Sith was clearly the best of the prequel trilogy.")
	params.SetMessagingServiceSid("MG9752274e9e519418a7406176694466fa")
	params.SetTo("+441632960675")

	resp, err := client.Api.CreateMessage(params)
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	} else {
		if resp.Body != nil {
			fmt.Println(*resp.Body)
		} else {
			fmt.Println(resp.Body)
		}
	}
}
```

```php
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once "/path/to/vendor/autoload.php";

use Twilio\Rest\Client;

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);

$message = $twilio->messages->create(
    "+441632960675", // To
    [
        "body" =>
            "Revenge of the Sith was clearly the best of the prequel trilogy.",
        "messagingServiceSid" => "MG9752274e9e519418a7406176694466fa",
    ]
);

print $message->body;
```

```ruby
# Download the helper library from https://www.twilio.com/docs/ruby/install
require 'twilio-ruby'

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new(account_sid, auth_token)

message = @client
          .api
          .v2010
          .messages
          .create(
            body: 'Revenge of the Sith was clearly the best of the prequel trilogy.',
            messaging_service_sid: 'MG9752274e9e519418a7406176694466fa',
            to: '+441632960675'
          )

puts message.body
```

```bash
# Install the twilio-cli from https://twil.io/cli

twilio api:core:messages:create \
   --body "Revenge of the Sith was clearly the best of the prequel trilogy." \
   --messaging-service-sid MG9752274e9e519418a7406176694466fa \
   --to +441632960675
```

```bash
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json" \
--data-urlencode "Body=Revenge of the Sith was clearly the best of the prequel trilogy." \
--data-urlencode "MessagingServiceSid=MG9752274e9e519418a7406176694466fa" \
--data-urlencode "To=+441632960675" \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
```

```json
{
  "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "api_version": "2010-04-01",
  "body": "Revenge of the Sith was clearly the best of the prequel trilogy.",
  "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
  "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
  "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
  "direction": "outbound-api",
  "error_code": null,
  "error_message": null,
  "from": null,
  "messaging_service_sid": "MG9752274e9e519418a7406176694466fa",
  "num_media": "0",
  "num_segments": "1",
  "price": null,
  "price_unit": null,
  "sid": "SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "queued",
  "subresource_uris": {
    "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json"
  },
  "to": "+441632960675",
  "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
}
```

When you send a message with a Messaging Service, Twilio immediately sets the message's status to `accepted`. Twilio will then determine the optimal `From` phone number from your service.

### Status callback URL

The delivery status of your message, including any delivery errors, will be sent asynchronously to your status callback URL. This URL can be specified in your Twilio Console for your Messaging Service in the **Integration > Delivery Status Callback** section. Alternatively, you can specify your status callback URL [using the API](/docs/messaging/api/service-resource).

## Using WhatsApp with Messaging Services

You can add a [WhatsApp](/docs/whatsapp)-enabled Twilio phone number to the other sender-types (long codes, short codes, etc.) in your Messaging Service Sender Pool. This way, you can configure and apply the relevant Messaging Service features, such as setting a [Validity Period](#validity-period), for all sender types in one Service all at once. In the feature descriptions below, we include whether the feature is supported for both SMS and WhatsApp.

To include WhatsApp in your Sender Pool, in the [Twilio Console](https://www.twilio.com/console), go to the **Messaging > Services** section and select a Messaging Service. Under that Service's **Sender Pool**, you can **Add Senders** and specify the WhatsApp-enabled Twilio number that you want to include.

Learn more about the [WhatsApp Business Platform with Twilio](/docs/whatsapp).

## Use RCS with Messaging Services

You can add a [Rich Communication Services (RCS)](/docs/rcs) Sender to your Messaging Service Sender Pool.

To learn more about using Twilio with RCS, see [Programmable Messaging RCS Onboarding](/docs/rcs).

## Out-of-the-box Messaging Service features

Messaging Services are designed to help you scale your application's messaging from your first SMS to messages sent globally, in multiple languages, from more than just [long code](/docs/glossary/what-long-code-phone-number) phone numbers.

As soon as you create your Messaging Service, the following features apply automatically, in contrast to [configurable Messaging Services features](#configurable-messaging-services-features).

### Alphanumeric Sender

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

[Alphanumeric Sender IDs](/docs/glossary/what-alphanumeric-sender-id) are used for branded one-way messaging. You can add an Alphanumeric Sender ID to your Sender Pool to activate this feature.

With Alpha Sender, you can send your messages to customers from a customized sender. Instead of using an [E.164](/docs/glossary/what-e164)-formatted Twilio phone number for the `From` value, you can use a custom string like your own business' branding. Alphanumeric Sender IDs may be used at no additional cost when sending an SMS to [countries that support this feature](https://help.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID).

> \[!WARNING]
>
> Support for sending messages from an Alpha Sender depends on your destination (`To`) phone number and is not available everywhere. See [this article for the full list of countries that support this feature](https://help.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID).

If you add an Alpha Sender to your Twilio Messaging Service, Twilio will select the Alphanumeric Sender ID automatically when you send a message to a supported country, unless you also have a [short code number](https://help.twilio.com/hc/en-us/articles/223182068-What-is-a-Messaging-Short-Code-) in that same country.

See our [detailed guide on Alphanumeric Sender IDs](/docs/messaging/services/alphanumeric-sender-ids-in-messaging-services), their features and limitations, and how to add them to your Messaging Service.

### Short code reroute

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

When your Messaging Service Sender Pool includes a [short code](/docs/glossary/what-is-a-short-code), Twilio always prioritizes message delivery using that short code. If a [carrier is not supported by a Twilio short code](https://help.twilio.com/hc/en-us/articles/223182088-What-carriers-are-supported-on-Twilio-short-codes-), Twilio automatically delivers the message with a [long code](/docs/glossary/what-long-code-phone-number) in your Messaging Service instead.

Twilio automatically applies short code rerouting for messages sent through your Messaging Service. This is not a feature that you activate or deactivate.

> \[!NOTE]
>
> Short code reroute does *not* attempt to redeliver your message over a long code due to a `Failed` or `Undelivered` delivery status. Automated retries for delivery errors are generally discouraged; we recommend that if you see a pattern of nondelivery to specific users, you [troubleshoot those errors](https://help.twilio.com/hc/en-us/articles/223181868-Troubleshooting-Undelivered-Twilio-SMS-Messages) rather than retrying automatically.

### Country Code Geomatch

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

When sending messages internationally, Country Code Geomatch selects the sender in your Messaging Service that matches the country of your recipient's phone number. The fallback behavior differs by channel:

* **SMS:** If no matching number is available, Twilio first attempts to select a US number — since US SMS senders typically have higher international delivery rates — then falls back to any available number in the pool. The message fails if no numbers are available.
* **WhatsApp:** If no matching sender is available, Twilio selects any available WhatsApp sender in the pool, since WhatsApp messages route over the internet and a US sender has no delivery advantage.

You can use Country Code Geomatch by adding senders to your Messaging Service that match the countries of your recipients.

When a phone number of a new geographic country is added to your Messaging Service, Twilio automatically selects and remaps any existing [Sticky Sender](#sticky-sender) mappings so that the `From` number matches the same country as your recipient's phone number.

### Scaler

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

The Scaler feature distributes your outbound messaging traffic evenly across the senders (phone numbers, WhatsApp channel address, etc.) in your Messaging Service so that you can handle higher volumes of messages.

When your Messaging Service sends a message, it selects a `From` number from the numbers in your Sender Pool that are not currently being used to send other messages.

When [Sticky Sender](#sticky-sender) is enabled, the Messaging Service prioritizes any existing Sticky Sender mappings first. It then selects another sender from your Service's Sender Pool that has the fewest `To`/`From` mappings.

> \[!WARNING]
>
> Be careful to not include more than one toll-free number within the same Messaging Service's Sender Pool. This can result in blocking that number.

## Configurable Messaging Services features

In addition to the basic Messaging Service functionality discussed above, there are several, more advanced features that you can use to manage your Service's senders, integration with your application, your messaging content, compliance, opt-out keywords, and more.

You can enable these features and change their settings in the [Twilio Console](https://www.twilio.com/console).

### Sticky Sender

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

The Sticky Sender feature ensures the same `From` phone number is selected every time your application sends a message to a particular end-user. This allows your application to consistently send messages to your user from a single, recognizable phone number.

With Sticky Sender enabled, Twilio maintains a mapping of all `To` and `From` phone numbers that your Messaging Service has used and interacted with. Twilio creates a new mapping after it sends the first message from your Messaging Service to a particular end-user. All future messages sent to that recipient from the Service will also use the same `From` number.

Twilio treats SMS phone numbers and WhatsApp senders as separate entities, so Sticky Sender maintains independent mappings for each channel—even when the underlying phone number is the same.

If Sticky Sender is turned off, your Messaging Service ignores all previously established mappings. However, if you toggle Sticky Sender back on in the future, your Messaging Service will retain and reference the previously existing mappings.

> \[!NOTE]
>
> When a Twilio phone number is removed from your Messaging Service, Twilio deletes all Sticky Sender mappings associated with the removed Twilio number.

#### How to enable Sticky Sender

In the **Sender Pool** section of your Messaging Service, expand **Sender selection settings**, then enable or disable Sticky Sender.

#### Intelligent number selection within a Messaging Service

When Sticky Sender is enabled, the Messaging Service follows the logic below to determine the optimal phone number as the `From` number:

![Flowchart for selecting phone numbers in Twilio Messaging Service based on recipient's country and message history.](https://docs-resources.prod.twilio.com/8c3329ef8d49342a7c892397e7401260dcb34f31a51705db442a81b2b22e2918.png)

### Area Code Geomatch

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

When sending messages to the United States and Canada, the Area Code Geomatch feature selects a local phone number with an area code that either matches or is an overlay of your end-user's number.

If an overlay or matching area code is not available, the Messaging Service will select another US or Canadian phone number from your Messaging Service. Geographic proximity is not taken into consideration in this case.

#### How to enable Area Code Geomatch

Under the **Sender Pool** section of your Messaging Service, expand the **Sender Selection Settings** box. From there, you can enable or disable the **Area Code Geomatch** feature.

> \[!NOTE]
>
> This feature isn't available outside the US and Canada.

### Validity period

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

Validity Period refers to the number of seconds for which messages sent from your Messaging Service will remain in Twilio's platform. If the time taken to send the message exceeds the Validity Period, Twilio fails the message and sends a request to your status callback URL to [notify your application of the failure](/docs/messaging/guides/track-outbound-message-status).

> \[!NOTE]
>
> Twilio's Validity Period applies *only* to messages while they travel through the Twilio platform. After Twilio sends the messages to the carrier network, the carriers may still queue the messages, resulting in a send time that exceeds the Validity Period.

#### How to enable Validity Period

Under the **Integration** section of your Messaging Service, you can enter the maximum queue time — in seconds — in the **Validity period** section.

You can set the Validity Period between 1 and 36,000 seconds (a maximum of ten hours). Default value is 36,000 seconds.

### Incoming Messages Handling

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

By default, Twilio will set your Messaging Service to "Defer to sender's webhook," meaning inbound messages will hit whatever inbound message handler is configured on your individual phone numbers. You can also change the behavior to automatically create a new [Conversation](/docs/conversations) — there's more on this feature under [Inbound Message Handling & Autocreation](/docs/conversations/inbound-autocreation) in Conversations.

#### How to enable Incoming Messages Handling

Under the **Integration** section of your Messaging Service, you can update how your messaging service handles incoming messages. Using the **Autocreate a Conversation** option requires additional configuration changes under the **Conversations** section of the Twilio Console.

### Smart Encoding

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

Your Messaging Service's **Smart Encoding** feature detects hidden Unicode characters and replaces them with a similar GSM-encoded character. This helps ensure that your message gets segmented at 160-character and saves you from sending two message segments, which increases your spend.

For example, sometimes a Unicode character such as a smart quote ( 〞), a long dash (—), or a Unicode whitespace accidentally slips into your carefully crafted 125-character message. Now, your message is segmented and priced at two messages instead of one.

This is because when Unicode characters are used in an SMS message, they must be encoded as [UCS-2](/docs/glossary/what-is-ucs-2-character-encoding). However, UCS-2 characters take 16 bits to encode, so when a message includes a Unicode character, it will be split or segmented between the 70th and 71st characters. This means that the character limit for UCS-2 encoded messages is shorter than the 160-character per message segment limit that you get with [GSM-7](/docs/glossary/what-is-gsm-7-character-encoding) character encoding.

> \[!NOTE]
>
> Smart Encoding does *not* transliterate messages that contain emoji (😱) or character-based languages such as Korean hangul (안녕하세요). [See this list for the Unicode characters that Smart Encoding will replace](/docs/messaging/services/smart-encoding-char-list).

#### How to enable Smart Encoding

Under the **Content Settings** section of your Messaging Service, you can enable or disable the Smart Encoding feature for SMS messages.

### MMS Converter

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

The MMS Converter feature automatically delivers [MMS](/docs/glossary/what-is-mms) messages as [SMS](/docs/glossary/what-is-an-sms-short-message-service) text messages when [the carrier doesn't support receiving Twilio MMS Messages](https://help.twilio.com/hc/en-us/articles/223133707-Is-MMS-supported-for-all-carriers-in-US-and-Canada-).

The MMS Converter transforms the MMS to an SMS message that contains a shortened URL linking to the media. The MMS Converter appends the shortened URL link (`https://p.twil.io/` followed by seven unique characters) to the end of the message body; this link remains active for 365 days (one year). Messaging Service sender selects the most appropriate SMS-capable sender according to the recipient's location to improve message deliverability and compliance with local regulations.

> \[!WARNING]
>
> Twilio bills the converted messages as SMS Messages. The appended URL may cause the body of the text message to be greater than the number of characters-per-segment for the character encoding system (read about [GSM-7](/docs/glossary/what-is-gsm-7-character-encoding) and [UCS-2](/docs/glossary/what-is-ucs-2-character-encoding)). In this case, Twilio segments the message and bills accordingly.

#### How to activate MMS Converter

You can activate or deactivate the **MMS Converter** feature under the **Content Settings** section of your Messaging Service.

> \[!WARNING]
>
> MMS Converter sends links to media files via SMS where the receiving carrier doesn't support MMS. It does *not* allow you to send media if your `From` phone number lacks MMS capabilities.
>
> You can [check the capabilities](https://www.twilio.com/console/phone-numbers/search) of numbers in the console or query the [Available Phone Numbers](/docs/phone-numbers/api/availablephonenumber-resource) resource to search for Twilio numbers that are MMS enabled.

### Sender ID Pre-registration Alert

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | No                      |

The **Sender ID Pre-registration Alert** feature automatically alerts you when you send messages to countries that require pre-registered Sender IDs. Some countries that support [Alphanumeric Sender IDs](/docs/glossary/what-alphanumeric-sender-id) require pre-registration of the Sender ID prior to use.

To help you remain compliant, enable Sender ID Pre-registration Alert as you scale your messaging traffic. Once it is enabled, this feature issues warnings when you send unregistered messaging traffic in countries where registration is recommended or required. You can find the alerts in [the Debugger section of the Twilio Console](https://www.twilio.com/console/debugger).

> \[!WARNING]
>
> While this feature does *alert* you of a potential compliance issue, it does not block or prevent your messages from being sent.

#### How to enable the Sender ID pre-registration alert

You can enable or disable the **Sender ID pre-registration alert** feature under the **A2P & Compliance** section of your Messaging Service.

### Advanced Opt-Out

| Supported for SMS? | Supported for WhatsApp? |
| ------------------ | ----------------------- |
| Yes                | Yes                     |

The **Advanced Opt-Out** feature gives you the ability to deliver a customized, end-to-end compliance experience for your users. You have the ability to set the opt-in, opt-out, and help keywords and confirmation messages on a global basis as well as add per-language and per-country overrides. For example, you can customize the message that your end-users receive if they reply with "STOP" in English or with "AYUDA" in Spanish.

In addition, Advanced Opt-Out gives you deeper insight into your campaign performance and user engagement with your Messaging Service. When a user triggers one of your opt-in, opt-out, or help keywords, Twilio includes the `OptOutType` in its request to your configured webhook URL so that you can keep track of the health of your campaigns.

#### How to enable Advanced Opt-Out

Under the **Opt-Out Management** section of your Messaging Service, you can select **Enable** **Advanced Opt-Out** as well as customize all of the keyword and confirmation messages for opt-out, opt-in, and help interactions with your end users.

Read [the guide to customizing users' opt-in and opt-out experience with Advanced Opt-Out](/docs/messaging/tutorials/advanced-opt-out) to make sure you configure this feature correctly for your messaging needs.

## Deleting a Messaging Service

If you no longer need a Messaging Service, you can delete it through the Twilio Console.

In the Console, go to the **Messaging Services** page and click on the Messaging Service you want to delete. This takes you to the **Properties** page for that service. On this page, click **Delete Messaging Service** and confirm to proceed with the deletion.

> \[!WARNING]
>
> Deleting a Messaging Service is permanent and you cannot undo this action. Make sure you no longer need the service before you proceed with deletion.
