> ## Documentation Index
> Fetch the complete documentation index at: https://plivo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SMS Bulk Messaging

> Send bulk SMS messages — PHLO workflow and API implementation guide

<Tabs>
  <Tab title="Node">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with Node.js, follow our instructions to [set up a Node.js development environment](/sdk/server/set-up-node-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.js` and paste into it this code.

        ```javascript theme={null}
        var plivo = require('plivo');
        var PhloClient = plivo.PhloClient;

        var authId = '<auth_id>';
        var authToken = '<auth_token>';
        var phloId = '<phlo_id>';
        var phloClient = phlo = null;

        phloClient = new PhloClient(authId, authToken);
        phloClient.phlo(phloId).run().then(function (result) {
            console.log('Phlo run result', result);
        }).catch(function (err) {
            console.error('Phlo run failed', err);
        });
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.js` and paste into it this code.

        ```javascript theme={null}
        var plivo = require('plivo');
        var PhloClient = plivo.PhloClient;


        var phloId = '<phlo_id>';
        var phloClient = phlo = null;

        var payload = {
            'From': '<sender_id>',
            'Recipient_1': '<destination_number_1>',
            'Recipient_2': '<destination_number_2>',
        }
        phloClient = new PhloClient('<auth_id>', '<auth_token>');
        phloClient.phlo(phloId).run(payload).then(function(result) {
            console.log('Phlo run result', result);
        });
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.

        ```shell theme={null}
        node TriggerPhlo.js
        ```
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a Node.js development environment](http://localhost:30000/docs/sdk/server/set-up-node-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a file called `send_sms.js` and paste into it this code.

        ```javascript theme={null}
        var plivo = require('plivo');
        (function main() {
            'use strict';
            var client = new plivo.Client("<auth_id>", "<auth_token>");
            client.messages.create(
              { 
                  src: "<sender_id>", 
                  dst: "<destination_number_1<destination_number_2>",
                  text: "Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout"
              },
              ).then(function (response) {
                console.log(response);
            });
        })();
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.

        ```shell theme={null}
        node send_sms.js
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Ruby">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with Ruby, follow our instructions to [set up a Ruby development environment](/sdk/server/set-up-ruby-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a file called `trigger_phlo.rb` and paste into it this code.

        ```ruby theme={null}
        require 'rubygems'
        require 'plivo'

        include Plivo

        AUTH_ID = '<auth_id>'
        AUTH_TOKEN = '<auth_token>'

        client = Phlo.new(AUTH_ID, AUTH_TOKEN)

        # if credentials are stored in the PLIVO_AUTH_ID and the PLIVO_AUTH_TOKEN environment variables
        # then initialize client as:
        # client = Phlo.new

        begin
          phlo = client.phlo.get('<phlo_id>')
          response = phlo.run()
          puts response
        rescue PlivoRESTError => e
          puts 'Exception: ' + e.message
        end
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a file called `trigger_phlo.rb` and paste into it this code.

        ```ruby theme={null}
        require 'rubygems'
        require 'plivo'

        include Plivo

        client = Phlo.new('<auth_id>', '<auth_token>')

        begin
        phlo = client.phlo.get('<phlo_id>')
        params = {
          'From':'<sender_id>',
          'Recipient_1': '<destination_number_1>',
          'Recipient_2': '<destination_number_2>',
        }
        response = phlo.run(params)
        puts response
        end
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.

        ```shell theme={null}
        ruby trigger_phlo.rb
        ```
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a Ruby development environment](/sdk/server/set-up-ruby-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a file called `send_sms.rb` and paste into it this code.

        ```ruby theme={null}
        require "plivo"
        include Plivo

        api = RestClient.new("<auth_id>","<auth_token>")
        response = api.messages.create(
            src:"<sender_id>", 
            dst:"<destination_number_1<destination_number_2>"
            text:"Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout",
          )
          puts response
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.

        ```shell theme={null}
        ruby send_sms.rb
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Python">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with Python, follow our instructions to [set up a Python development environment](/sdk/server/set-up-python-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a file called `trigger_phlo.py` and paste into it this code.

        ```python theme={null}
        import plivo

        auth_id = '<auth_id>'
        auth_token = '<auth_token>'
        phlo_id = '<phlo_id>'
        phlo_client = plivo.phlo.RestClient(auth_id=auth_id, auth_token=auth_token)
        phlo = phlo_client.phlo.get(phlo_id)
        response = phlo.run()
        print(str(response))
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a file called `trigger_phlo.py` and paste into it this code.

        ```python theme={null}
        import plivo

        phlo_id = "<phlo_id>"
        payload = {
            "From": "<sender_id>",
            "Recipient_1": "<destination_number_1>",
            "Recipient_2": "<destination_number_2>",
        }
        phlo_client = plivo.phlo.RestClient("<auth_id>", "<auth_token>")
        phlo = phlo_client.phlo.get(phlo_id)
        response = phlo.run(**payload)
        print(response)
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.

        ```shell theme={null}
        python trigger_phlo.py
        ```
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a Python development environment](/sdk/server/set-up-python-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a file called `send_sms.py` and paste into it this code.

        ```python theme={null}
        import plivo

        client = plivo.RestClient('<auth_id>','<auth_token>')
        response = client.messages.create(
            src='<sender_id>',
            dst='<destination_number_1<destination_number_2>',
            text='Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout',)
        print(response)
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.

        ```shell theme={null}
        python send_sms.py
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="PHP">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with PHP, follow our instructions to [set up a PHP development environment](/sdk/server/set-up-php-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.php` and paste into it this code.

        ```php theme={null}
        <?php
        require 'vendor/autoload.php';
        use Plivo\Resources\PHLO\PhloRestClient;
        use Plivo\Exceptions\PlivoRestException;
        $client = new PhloRestClient("<auth_id>", "<auth_token>");

        $phlo = $client->phlo->get("<phlo_id>");
        try {
            $response = $phlo->run();
            print_r($response);
        } catch (PlivoRestException $ex) {
            print_r($ex);
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.php` and paste into it this code.

        ```php theme={null}
        <?php
        require 'vendor/autoload.php';
        use Plivo\Resources\PHLO\PhloRestClient;
        use Plivo\Exceptions\PlivoRestException;
        $client = new PhloRestClient("<auth_id>", "<auth_token>");

        $phlo = $client->phlo->get("<phlo_id>");
        try {
            $response = $phlo->run(["From" => "<sender_id>", "To" => "<destination_number>"]);
            print_r($response);
        } catch (PlivoRestException $ex) {
            print_r($ex);
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.

        ```shell theme={null}
        php TriggerPhlo.php
        ```
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a PHP development environment](/sdk/server/set-up-php-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a file called `SendSMS.php` and paste into it this code.

        ```php theme={null}
        <?php
        require 'vendor/autoload.php';
        use Plivo\RestClient;
        $client = new RestClient("<auth_id>","<auth_token>");
        $response = $client->messages->create(
           [  
                "src" => "<sender_id>",
                "dst" => "<destination_number_1<destination_number_2>",
                "text" => "Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout",
           ]
        );
        print_r($response);
        ?>
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.

        ```shell theme={null}
        php SendSMS.php
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title=".NET">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with .NET, follow our instructions to [set up a .NET development environment](/sdk/server/set-up-dotnet-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        In Visual Studio, in the CS project, open the file `Program.cs` and paste into it this code.

        ```csharp theme={null}
        using System;
        using Plivo;

        namespace test_PHLO
        {
            class Program
            {
                public static void Main(string[] args)
                {
                    var phloClient = new PhloApi("<auth_id>", "<auth_token>"); 
                    var phloID = "<phlo_id>";
                    var phlo = phloClient.Phlo.Get(phloID);   
                    Console.WriteLine(phlo.Run());
                }
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        In Visual Studio, in the CS project, open the file `Program.cs` and paste into it this code.

        ```csharp theme={null}
        using System;
        using System.Collections.Generic;
        using Plivo;

        namespace test_PHLO
        {
            class Program
            {
                public static void Main(string[] args)
                {
                    var phloClient = new PhloApi("<auth_id>", "<auth_token>");
                    var phloID = "<phlo_id>";
                    var phlo = phloClient.Phlo.Get(phloID); 
                    var data = new Dictionary<string, object>
                    {
                        { "From", "<sender_id>" },
                        { "Recipient_1", "<destination_number_1>" }
                        { "Recipient_2", "<destination_number_2>" }

                    };  
                    Console.WriteLine(phlo.Run(data));
                }
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a .NET development environment](/sdk/server/set-up-dotnet-dev-environment-api-messaging/).

        ## Create the send SMS application

        In Visual Studio, in the CS project, open the file `Program.cs` and paste into it this code.

        ```csharp theme={null}
        <?php
        using System;
        using System.Collections.Generic;
        using Plivo;

        namespace PlivoExamples
        {
            internal class Program
            {
                public static void Main(string[] args)
                {
                    var api = new PlivoApi("<auth_id>","<auth_token>");
                    var response = api.Message.Create(
                        src: "<sender_id>",
                        dst: "<destination_number_1<destination_number_2>",
                        text: "Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout"
                        );
                    Console.WriteLine(response);
                }
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Java">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with Java, follow our instructions to [set up a Java development environment](/sdk/server/set-up-java-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a Java class called `TriggerPhlo` and paste into it this code.

        ```java theme={null}
        import com.plivo.api.Plivo;
        import com.plivo.api.PlivoClient;
        import com.plivo.api.exceptions.PlivoRestException;
        import com.plivo.api.models.phlo.Phlo;
        import java.io.IOException;

        public class Example
        {
            private static final String authId = "<auth_id>";
            private static final String authToken = "<auth_token>";
            private static PlivoClient client = new PlivoClient(authId, authToken);
            public static void main(String[] args) throws IOException, PlivoRestException
            {
                String phloId = "<phlo_id>";
                Plivo.init(authId, authToken);
                Phlo phlo = Phlo.getter(phloId).client(client).get();
                PhloUpdateResponse response = Phlo.updater(phloId).payload().run();
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a Java class called `TriggerPhlo` and paste into it this code.

        ```java theme={null}
        import com.plivo.api.Plivo;
        import com.plivo.api.PlivoClient;
        import com.plivo.api.exceptions.PlivoRestException;
        import com.plivo.api.models.phlo.Phlo;
        import java.io.IOException;

        public class Example
        {
            private static PlivoClient client = new PlivoClient("<auth_id>", "<auth_token>");
            public static void main(String[] args) throws IOException, PlivoRestException
            {
                String phloId = "<phlo_id>";
                Plivo.init(authId, authToken);
                Phlo phlo = Phlo.getter(phloId).client(client).get();
                Map<String, Object> payload = new HashMap<>();
                payload.put("From", "<sender_id>");
                payload.put("Recipient_1", "<destination_number_1>");
                payload.put("Recipient_2", "<destination_number_2>");
                PhloUpdateResponse response = Phlo.updater(phloId).payload(payload).run();
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time using Plivo APIs, follow our instructions to [set up a Java development environment](/sdk/server/set-up-java-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a Java class called `SendSMS` and paste into it this code.

        ```java theme={null}
        import java.io.IOException;
        import java.net.URL;
        import java.util.Collections;

        import com.plivo.api.Plivo;
        import com.plivo.api.exceptions.PlivoRestException;
        import com.plivo.api.models.message.Message;
        import com.plivo.api.models.message.MessageCreateResponse;

        class SendSMS
        {
            public static void main(String [] args)
            {
                Plivo.init("<auth_id>","<auth_token>");
                    MessageCreateResponse response = Message.creator("<sender_id>","<destination_number_1<destination_number_2>",
                            "Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout")
                            .create();
                    System.out.println(response);
            }
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Go">
    ## Overview

    This guides shows how to send an SMS text message to multiple phone numbers. You can use this technique to tell customers about new offerings or send out customer surveys, among other use cases.

    You can send bulk SMS messages either by using our PHLO visual workflow builder or our APIs. Follow the instructions in one of the tabs below.

    <Tabs>
      <Tab title="Using PHLO">
        You can create and deploy a PHLO to send bulk SMS text messages with a few clicks on the PHLO canvas and trigger it with a few lines of code.

        ## How it works

        <Frame caption="Send SMS">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. If this is your first time triggering a PHLO with Go, follow our instructions to [set up a Go development environment](/sdk/server/set-up-go-dev-environment-phlo/).

        ## Create the PHLO

        To create a PHLO, visit the [PHLO](https://cx.plivo.com/agents) page of the Plivo console. If this is your first PHLO, the PHLO page will be empty.

        <Frame>
          <video controls className="w-full aspect-video" src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk-sms.mp4?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cbfc8d6514b007f604ef767a0e1209f2" data-path="images/phlo/quickstart-guides/bulk-sms.mp4" />
        </Frame>

        * Click **Create New PHLO**.

        * In the **Choose your use case** pop-up, click **Build my own**. The PHLO canvas will appear with the **Start** node.

                  <Note>
                    The Start node is the starting point of any PHLO. It lets you trigger a PHLO to start upon one of three actions: incoming SMS message, incoming call, or API request.
                  </Note>

        * If you plan to use a dynamic payload — passing values through parameters when you trigger the PHLO from your application — click on the **Start** node to open the Configuration pane. Under **API Request**, enter key names for the variables you want use in your payload — **From**, **To**, and **Message** fields.

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * From the list of components on the left-hand side, drag and drop the **Send Message** component onto the canvas. When a component is placed on the canvas it becomes a node.

        * Draw a line to connect the **Start** node’s  **API Request** trigger state to the **Send Message** node.

        * In the Configuration pane at the right of the canvas, configure the **Send Message** node with a sender ID in the **From** field. Enter the destination number you wish to send a message to in the **To** field. Put your message in the **Text** field.

                  <Note>
                    You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through [Liquid](https://shopify.github.io/liquid/) templating parameters when you trigger the PHLO from your application.
                  </Note>

        * Once you’ve configured the node, click **Validate** to save the configuration.

        * After you complete the configuration, give the PHLO a name by clicking in the upper left, then click **Save**.

        Your PHLO is now ready to test.

        ## Trigger the PHLO

        You integrate a PHLO into your application workflow by making an API request to trigger the PHLO with the required payload — the set of parameters you pass to the PHLO. You can define a static payload by specifying values when you create the PHLO, or define a dynamic payload by passing values through parameters when you trigger the PHLO from your application.

        In either case, you need your Auth ID and Auth Token, which you can get from the overview page of the Plivo [console](https://cx.plivo.com/home).

        <Frame caption="AUTHID">
          <img src="https://mintcdn.com/plivo/Ac6PoKJHHxDx1U63/images/phlo/quickstart-guides/AuthID.png?fit=max&auto=format&n=Ac6PoKJHHxDx1U63&q=85&s=d74543149c207ee5af89fc78d6f1784d" width="2340" height="274" data-path="images/phlo/quickstart-guides/AuthID.png" />
        </Frame>

        You also need the PHLO ID, which you can copy from the [PHLO list](https://cx.plivo.com/agents) page.

        <Frame caption="PHLO List">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/Phlo_listing.jpg?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=cc02d781e67b43b495b8cba467648519" width="1440" height="348" data-path="images/phlo/quickstart-guides/Phlo_listing.jpg" />
        </Frame>

        ### With a static payload

        When you configure values when creating the PHLO, they act as a static payload.

        <Frame caption="With Static Payload">
          <img src="https://mintcdn.com/plivo/GjxgkWYDEc2_LVPj/images/phlo/quickstart-guides/bulk_sms_static.png?fit=max&auto=format&n=GjxgkWYDEc2_LVPj&q=85&s=17125553b0ead2aa6afd6a6706ec9ae5" width="1440" height="822" data-path="images/phlo/quickstart-guides/bulk_sms_static.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.go` and paste into it this code.

        ```go theme={null}
        package main

        import (
        	"fmt"
        	"plivo-go"
        )
        // Initialize the following params with corresponding values to trigger resources
        const authId = "<auth_id>"
        const authToken = "<auth_token>"
        const phloId = "<phlo_id>"

        func main() {
        	testPhloRunWithoutParams()
        }

        func testPhloRunWithoutParams() {
        	phloClient, err := plivo.NewPhloClient(authId, authToken, &plivo.ClientOptions{})
        	if err != nil {
        			fmt.Print("Error", err.Error())
        			return
        		}
        	phloGet, err := phloClient.Phlos.Get(phloId)
        	if err != nil {
        			fmt.Print("Error", err.Error())
        			return
        		}
        	response, err := phloGet.Run(nil)
        	if err != nil {
        			fmt.Print("Error", err.Error())
        			return
        		}
        	fmt.Printf("Response: %#v\n", response)
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents).

        ### With a dynamic payload

        To use dynamic values for the parameters, use Liquid templating parameters when you create the PHLO ...

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/send_sms_payload.png?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=0acb088ac29fea764ccf976873eee390" width="1436" height="818" data-path="images/phlo/quickstart-guides/send_sms_payload.png" />
        </Frame>

        ... and pass the values from your code when you trigger it.

        <Frame caption="With Dynamic Payload">
          <img src="https://mintcdn.com/plivo/65CVI_jE4hodrnjj/images/phlo/quickstart-guides/send_sms_access_payload.png?fit=max&auto=format&n=65CVI_jE4hodrnjj&q=85&s=76a8966e5513d86b098894585b972be0" width="1439" height="818" data-path="images/phlo/quickstart-guides/send_sms_access_payload.png" />
        </Frame>

        #### Code

        Create a file called `TriggerPhlo.go` and paste into it this code.

        ```go theme={null}
        package main

        import (
            "fmt"
            "plivo-go"
        )

        const phloId = "<phlo_id>"

        func main() {
            testPhloRunWithParams()
        }

        func testPhloRunWithParams() {
            phloClient, err: = plivo.NewPhloClient("<auth_id>", "<auth_token>", & plivo.ClientOptions {})
            if err != nil {
                fmt.Print("Error", err.Error())
                return
            }
            phloGet, err: = phloClient.Phlos.Get(phloId)
            if err != nil {
                fmt.Print("Error", err.Error())
                return
            }
            type params map[string] interface {}
            response, err: = phloGet.Run(params {
                "From": "<sender_id>",
                "Recipient_1": "<destination_number_1>",
                "Recipient_2": "<destination_number_2>",
            })

            if err != nil {
                println(err)
            }
            fmt.Printf("Response: %#v\n", response)
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phlo\_id placeholder with your PHLO ID from the [Plivo console](https://cx.plivo.com/agents). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164)(for example, +12025551234).

        ## Test

        Save the file and run it.

        ```shell theme={null}
        go run TriggerPhlo.go
        ```
      </Tab>

      <Tab title="Using API">
        Here’s how to use Plivo APIs to send bulk marketing SMS text messages.

        ## How it works

        <Frame caption="Sending Bulk SMS Messages">
          <img src="https://mintcdn.com/plivo/-VVFcM3g7XHd8wTl/images/phlo/quickstart-guides/sms-marketing.jpg?fit=max&auto=format&n=-VVFcM3g7XHd8wTl&q=85&s=5b40a4f576aa217779db6869ef9f793d" width="1446" height="774" data-path="images/phlo/quickstart-guides/sms-marketing.jpg" />
        </Frame>

        ## Prerequisites

        To get started, you need a Plivo account —  [sign up](https://cx.plivo.com/signup) with your work email address if you don’t have one already. To receive incoming messages, you must have a Plivo phone number that supports SMS; you can rent numbers from the [Numbers](https://cx.plivo.com/phone-numbers) page of the Plivo console or by using the [Numbers API](/numbers/). If this is your first time using Plivo APIs, follow our instructions to [set up a Go development environment](/sdk/server/set-up-go-dev-environment-api-messaging/).

        ## Create the send SMS application

        Create a file called `SendSMS.go` and paste into it this code.

        ```go theme={null}
        package main

        import "fmt"
        import "github.com/plivo/plivo-go/v7"

        func main() {
        	client, err := plivo.NewClient("<auth_id>","<auth_token>", &plivo.ClientOptions{})
        	if err != nil {
        			fmt.Print("Error", err.Error())
        			return
        		}
        	response, err := client.Messages.Create(
        		plivo.MessageCreateParams{
        			Src: "<sender_id>",
        			Dst: "<destination_number_1<destination_number_2>",
        			Text: "Flash sale — half price on all products — offer expires at midnight. Use code 50OFF at checkout",
        		},
        	)
        	if err != nil {
        			fmt.Print("Error", err.Error())
        			return
        		}
        	fmt.Printf("Response: %#v\n", response)
        }
        ```

        Replace the auth placeholders with your authentication credentials from the [Plivo console](https://cx.plivo.com/home). Replace the phone number placeholders with actual phone numbers in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234). In countries other than the US and Canada you can use a [sender ID](/messaging/concepts/sender-id-usage/) for the message source. You must have a Plivo phone number to send messages to the US or Canada; you can buy a Plivo number from Phone Numbers > [Buy Numbers](https://cx.plivo.com/home) on the Plivo console or via the [Numbers API](/numbers/api/phone-number/#buy-a-phone-number).

        <Note>
          We recommend that you store your credentials in the `auth_id` and `auth_token` environment variables to avoid the possibility of accidentally committing them to source control. If you do this, you can initialize the client with no arguments and Plivo will automatically fetch the values from the environment variables. You can use `process.env` to store environment variables and fetch them when initializing the client.
        </Note>

        ## Test

        Save the file and run it.

        ```shell theme={null}
        go run SendSMS.go
        ```
      </Tab>
    </Tabs>
  </Tab>
</Tabs>
