Tips for Managing Your Messaging Programs

Updated by miranda lan

Pause Broadcast in Progress
  1. If you need to edit a broadcast that’s already sending, you can click Pause sending at the top left of this new section. This button will appear below the Send Broadcast button once your broadcast is sending.
  2. You will only be able to pause the texts that are listed in the Queued by Switchboard section. Any texts that are already Delivered or Queued by our Texting Provider have already been sent and can’t be paused or edited.
  3. When you are ready to resume your texts you can click Resume Sending.
Send a Test Message
  1. Once you navigate to Broadcasts from your messaging home page, and are in your broadcast (new or draft), find the Send Test Messages to Yourself or Your Team section at the bottom of the page. Click on the title to open the drop down.
    1. From here, you can send test messages to see what your message will look like on a cell phone. The contents of the message will use personalization data from a random contact in this broadcast's phone list, to make the test as realistic as possible.
      Note: Don’t expect to see your name or personal information here.
  2. You can either reuse a phone list you’ve already used before or create a new list from a CSV. If creating a new list, all you need to include is the phone number(s) of who you want to receive the test.
The CSV should only contain one column with the column header reading “cell” and phone numbers below in any format.

Once you are ready, click Send Test Messages. Note - this is a good way to make sure clicks are being tracked and media looks good on every type of device!

Upload Media to Broadcast
  1. Once you navigate to Broadcasts from your messaging home screen, and are in your broadcast (new or draft), find the Compose Message section. The first sub-section under Compose Message is MMS Media (Optional). This is where you will upload your media!
  2. To upload new media, click Upload Media.
    1. This will open a new window. We support uploading .jpeg, .png, .gif, and .mp4. To upload your file, click Choose File.
    2. After you choose your file, click upload.
  3. To use media you’ve previously uploaded, click Saved Media.
    1. This will open up a window of all of your previously used saved media. Here, select one of the images/videos/gifs and then Select.
  4. After you select your media, from either option, you will see it appear in your example message preview.
  5. If you decide you do not want to use that image, you can click the red x next to the name of your media under MMS Media (Optional).
Tips for Formatting Your Texts

In Switchboard you can customize your messages to make them personal to the individual receiving them.

Why should I customize my messages?

There are a lot of different reasons to customize messages, but the main reasons you should invest time into learning how to do this is because it could help:

  1. Drive engagement: If the recipients of your messages are receiving multiple texts a day from other campaigns, you want to make sure your messages stand out! Either including their first name, or another custom element, could help ensure they click through your message over anything else they may be getting in their inbox!
  2. Increase Donor Activity: By customizing your messages to donors, you are ensure that you are asking for the right amount of money from each donor (no more and no less). You can do this by utilizing their donation history within your messages.
  3. Tracking Engagement: In Switchboard, we allow individuals to track clicks/engagement/donations down to the phone number. We do this by allowing you to use custom shortlink tracking with our free shortlinks we provide every Switchboard user! This way, you know who is engaging with your text and that can help you target for future sends.
Before you can start customizing your messages:

Before you can fully customize messages like a pro, you need to know what a custom field is.

A custom field is a variable that holds unique information about a specific person or entity that you want to include in your communications, such as a first name, last name, email address, phone number, donation amount, or any other data point that is important to your campaign or organization.

In order to ensure you can utilize custom fields when texting, you need to make sure the data is available in whatever format your phonelist is in. For CSVs this is just an additional column that has information about each phone number on your list. For NGPVAN and ActBlue lists, they automatically come with a set of custom fields you can utilize; they are not as custom as a CSV.

Customizing your Messages: Beginner
⚠️ Note - Switchboard custom fields are built using Jinja templating! If you ask Chat GPT to help you with “Jinja templating” that is really useful for troubleshooting 🙂

Using Custom Fields

  • Use the format {{ custom_field }} to dynamically insert custom fields.

Using Conditional Statements

You can also use if statements. For example:

  • Can you chip in {% if previous_donation and previous_donation > 20 %}$20{% else %}$5{% endif %} today?
  • Hi {% if first_name %}{{ first_name }}{% else %}friend{% endif %}!

You can also use or statements if you just want to have a backup option for a blank field, or if you're combining two lists with differently named custom fields. For example:

  • Hello {{first_name or 'friend'}} will show first_name if it's present, or the word 'friend' if it isn't.
  • Hello {{first_name or firstname or 'friend'}} will try first_name first, then try firstname, then use 'friend' as a last resort if both are missing.

🚩 Using Math Operations (like <, >, +, )

If you are using a custom and/or reusable field that does NOT have 100% coverage over your list, some of these more complex statements may fail. If you are using any field in a math operation (like <, >, *) you will need to make sure the value exists. For example:

${% if sb_max_amount_donated %}{{ (sb_max_amount_donated * 0.75) | sb_money}}{% else %}5{% endif %}

{% if sb_max_amount_donated %} - this part checks to make sure there is real value for the field sb_max_amount_donated, otherwise it will use the "else" section (in this case 5). If you were to not include the "if" part, when we try to render the message for a phone number with a missing sb_max_amount_donated, the * part would cause the message to fail.

How do I check coverage of fields in my list? When drafting your message, under “custom fields available” you can see coverage ratios like this:

Formatting names

If you'd like to make sure fields are formatted with proper capitalization, use the keyword title.

Hello {{first_name | title}}

This will turn first_name values like jane or JANE or JaNe all into Jane.

Formatting Money

If you'd like to display a money amount, you can use the keyword sb_money to make sure the number is formatted properly. If the field is a full dollar amount, we will not include the .00. So 100.5 becomes 100.50, but 100.00 becomes 100. For example, for the custom field previous_amount, you can write:

  • Can you chip in ${{ previous_amount | sb_money }} today?

Link Tracking

In Switchboard, we can automatically track clicks and resulting ActBlue donations from links, using unique tokens per message. To do so, put the link in quotes and wrap it in braces with the keyword sb_link. For example:

  • {{ "<>" | sb_link }}
  • {{ "<>" | sb_link }}

Other Fields You Can Use

We make the following generic variables available in templates for convenience.

  • {{ sb_month }} - Shows the current month (in Hawaii Standard Time). ex: July
  • {{ sb_weekday }} - Shows the current weekday (in Hawaii Standard Time). ex: Wednesday

There are ways to play with custom fields so you can customize shortlinks based on the recipient you are sending your messages to:

Option 1: Hiding the unique recipient parameter inside a custom shortlink (without a vanity slug) in Switchboard

If you want to make sure that each individual you are sending a message to gets their own unique shortlink, but you don’t want the refcode to be visible to the end-user, you can follow the below template.

{{("" ~ source_list) | sblink}}

  • blue and quotes: the uncustomized URL you want to redirect to
  • ~ is essentially telling the jinja template to append the custom field value to the URL you put in the quotes
  • source_list is the name of whatever custom field data you are pulling in. Typically this is the column header for data in a CSV you upload into the texting platform


💡 This method is great if you don’t care that the link doesn’t have a vanity slug attached to the end of it!

Option 2: Adding a unique recipient parameter inside a custom shortlink with a vanity slug in Switchboard

If you would prefer there be a “/unique-slug” vanity slug attached to your shortlink to indicate where the short link is redirecting to, you can do that with a unique parameter attached as well. Use the following template:

{{""| sblink }}&refcode={{source_list}}

  • &refcode= is saying to append a specific code that you indicate to the end of this link
  • {{source_list}} is the name of whatever custom field data you are pulling in. Typically this is the column header for data in a CSV you upload into the texting platform

The benefit of this method is that since there's no spaces, the customizations will still all blend nicely into a URL. The tradeoff here is that the recipient will see the &refcode={{source_code}} piece (it's "outside" the shortlink)

Switchboard Error Codes

When you send out a text with Switchboard, some messages may not deliver successfully — this is normal! Remember, Switchboard does not charge you for these undelivered messages.

The below table explains the most common error codes. To see error codes for all messages, you can export broadcast results at the bottom of each broadcast page. Feel free to reach out to if you have any questions or want information about an error code that isn’t described below.

Error Code

Error Name



Carrier Rejected Message

The destination carrier has rejected the message but did not provide a specific reason. For AT&T traffic, this could be a prepaid user whose account is out of money or a subscriber that is provisioned to not receive this type of SMS.


Unknown Error

Carrier reported an unknown failure. Similar to a 4750 error.


Carrier Application Error

The upstream carrier has reported that they cannot process this message. Try sending again, and if the failure persists update your message.


Invalid Service Type

The phone number you are trying to reach does not support SMS or MMS.

21614 or 9902

Timed out waiting for delivery receipt.

Our vendor did not provide the requested delivery receipt. If we receive it from them later, we will update the broadcast results.


Unknown Destination Handset

The destination number you are trying to reach is unknown and may no longer exist, or the the device you are trying to reach does not have sufficient service.


Unknown Destination

The destination number is unable to receive this message. Potential reasons could include trying to reach a landline or, in the case of short codes, an unreachable carrier.


Spam Detected

The carrier has determined that this message is spam related. Reach out to if you feel this failure was given in error.


Provisioning Error

A message was sent to a number that was not fully provisioned or your sending number has not been fully provisioned for sending.


Invalid Number

The number has an invalid format.


Sending Permission Denied

The number you are trying to reach is out of range (i.e. out of the country).

How did we do?