> ## 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.

# Forward Incoming SMS Messages

> Forward incoming SMS messages from a Plivo number to another number

## Overview

This guide shows how to receive SMS text messages on a Plivo phone number — something you might want to do to acknowledge a request from a customer, handle opt-ins and opt-outs, or implement an autoresponder application.

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

> [tab] Using API
>
> Here’s how to use Plivo APIs to forward incoming SMS text messages.
>
> ## How it works
>
> ![Forward SMS](https://mintcdn.com/plivo/2OFvQXVNT3srKLUy/images/forward-incoming-sms-api.jpg?fit=max\&auto=format\&n=2OFvQXVNT3srKLUy\&q=85\&s=25e81a6e7df523c71c17e52e775db712)
>
> ## 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](https://plivo.com/docs/numbers.md). If this is your first time using Plivo APIs, follow our instructions to set up a Ruby development environment and a web server and safely expose that server to the internet.
>
> ## Create a Rails controller to forward messages
>
> Change to the project directory and run this command to create a Rails controller to forward incoming messages.
>
> ```shell theme={null}
> $ rails generate controller Plivo sms
> ```
>
> This command generates a controller named plivo\_controller in the app/controllers/ directory and a respective view in app/views/plivo. We can delete the view as we don’t need it.
>
> ```shell theme={null}
> $ rm app/views/plivo/sms.html.erb
> ```
>
> Edit app/controllers/plivo\_controller.rb and paste this code in the PlivoController class.
>
> ```rb theme={null}
> include Plivo
> include Plivo::Exceptions
> include Plivo::XML
>
> class PlivoController < ApplicationController
>   skip_before_action :verify_authenticity_token
>   def forwardsms
>     from_number = params[:From]
>     to_number = params[:To]
>     text = params[:Text]
>     response = Response.new
>     params = {
>       src: to_number,
>       dst: "<destination_number>",
>     }
>     message_body = text
>     response.addMessage(message_body, params)
>     xml = PlivoXML.new(response)
>     puts xml.to_xml
>     render xml: xml.to_xml
>   end
> end
> ```
>
> Replace the destination number placeholder with an actual phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164) (for example, +12025551234).
>
> ### Add a route
>
> Edit config/routes.rb and change the line
>
> ```ruby theme={null}
> Rails.application.routes.draw do
>   get 'plivo/sms' 
> end
> ```
>
> to
>
> ```ruby theme={null}
> Rails.application.routes.draw do
>   post 'plivo/forwardsms/' => 'plivo#forwardsms'
> end
> ```
>
> Start the Rails server
>
> ```shell theme={null}
> $ rails server
> ```
>
> You should see your basic server application in action at [http://localhost:3000/plivo/autoresponder/](http://localhost:3000/plivo/autoresponder/).
>
> Set up ngrok to expose your local server to the internet.
>
> > [!NOTE]
> >
> > **Note:**
> > For ngrok testing, add this line to config/environments/development.rb.\\
> >
> > `config.hosts << /[a-z0-9-]+\.ngrok\.io/`
>
> ## Create a Plivo application to forward messages
>
> Associate the Rails controller you created with Plivo by creating a Plivo application. Visiting Messaging > [Applications](https://cx.plivo.com/xml-applications) and click **Add New Application**. You can also use Plivo's [Application API](https://plivo.com/docs/account/api/application.md#create-an-application).
>
> Give your application a name — we called ours `Forward SMS`. Enter the server URL you want to use (for example `https://<yourdomain>.com/forwardsms/`) in the `Message URL` field and set the method to `POST`. Click **Create Application** to save your application.
>
> ![Create Application](https://mintcdn.com/plivo/EvRfP72Bjs4tuRt5/images/configure_forward_sms.png?fit=max\&auto=format\&n=EvRfP72Bjs4tuRt5\&q=85\&s=67028b1806531bc2933f226dc6529f9d)
>
> ## Assign a Plivo number to your application
>
> Navigate to the [Numbers](https://cx.plivo.com/phone-numbers) page and select the phone number you want to use for this application.
>
> From the Application Type drop-down, select `XML Application`.
>
> From the Plivo Application drop-down, select `Forward SMS` (the name we gave the application).
>
> Click **Update Number** to save.
>
> ![Assign Phone Number to Forward SMS App](https://mintcdn.com/plivo/NFI9_HRHTMInDf93/images/assign_forward_sms.png?fit=max\&auto=format\&n=NFI9_HRHTMInDf93\&q=85\&s=a8a937ebbe5746155ebb2783179a11b2)
>
> ## Test
>
> Send a text message to the Plivo number you specified using any phone. The message should be forwarded to the destination number you specified.
