How to receive ThinkorSwim alert notifications via phone


Staff member
So I get this question a lot: how do I receive ThinkorSwim alerts via phone notification when my charting platform is not open?

To receive a push notification about an alert in ThinkorSwim, follow the instructions below:
  1. Download the ThinkorSwim mobile app from the AppStore or Google Play.
  2. Open the ThinkorSwim desktop platform and go to the Scan's page.
  3. Create a ThinkorSwim scanner with the condition of your choice.
  4. Select "Save as Watchlist"
  5. Select "Alert when scan results change..."
  6. Make sure the following option is enabled "Send push notifications to mobile devices."
ThinkorSwim scanner has a 3-5 min running interval. You'll be notified through your iPhone or Android device when a condition is met.

Now, let's get practical. Here is a walkthrough of the tutorial above.

Say I'm a busy person who can't have ThinkorSwim desktop app opened at work or that I'm always on the go and can't check on the market very often. But I don't want to miss out when the opportunity present itself.

I want to receive a push notification alert every time my Buy the Dip indicator gives a signal on the daily chart.

Step 1: Create a scanner for the indicator.

Here's the condition that will trigger the alert.


The thinkScript code for that would be:

BuyTheDip_Standard()."buythedip" crosses below BuyTheDip_Standard()."Zeroline"

Step 2: Select a watchlist for the scanner to scan in. I'm going to choose the S&P 500. If you have a custom watchlist, then you can pick that as well.


Step 3: Save your scanner as a watchlist and then select the following option: Alert when scan results change...



And that is it! From now on, an alert will be triggered right from my ThinkorSwim app via push notification whenever the Buy the Dip condition is met.

This method applies to almost every other indicator.

I hope that helps. Play around with it and let me know if you run into any issues.


In the ToS Studies and/or Strategies, we can create Alerts that will post to our Message Center.

We as a group need to Ask Support to include the Message Center as a Category in Setup - Notifications - Alert Triggered - Misc. - Message Center. So when our Studies or Strategies give us and Alert it will either Email and/or Text us our Alerts that post to our Message Center.

If All of us do this I'm sure we just mite get them to consider it. It at least can not hurt to try. I know I would love to be Texted when a Study or Strategy sends and Alert. Thanks All Craig


Staff member
@StockT8er You can receive text messages for ThinkorSwim alerts only when the stock price crosses above or below a set level. It doesn't work for scan results. Still worth a feature request, though ;)


New member
2019 Donor
Would it be hard to add audible and SMS alerts to studies. The one that gave me the idea was a simple one, PPS (person's pivot study.) I guess you could even make a snippet that could be tailored to other studies ( yes?? No???)

Last edited:


From last couple of weeks the text alert is changed for TD scan alerts. It really annoying to have extra message which is difficult to read.

Anyone know how to remove the extra message from text alert. Does anyone facing below issue?

Current Message format:
"TDA: Alert: New symbol:/ ES was added to the BullScan5M
To stop market & thinkorswim alerts like this, reply Stop10. TO stop all, reply Stop."

Previous message format:
"New symbol:/ ES was added to the BullScan5M"


@rad14733 Thank you for the info. Let me check that.
The issue was more related with the text alert so for workaround tried alerts through email which is more readable than confusing new text message alerts.


New member
I want to set up a scan that uses the daily time frame. I’d like alerts to hit intraday but the only functions I’m seeing are price-open or close. What function would I use to make this happen? Thanks


Well-known member
@Iceburgh The timeframe can be selected in the scan panel when creating the conditions... As for price, we are limited to the prices available to us within the Conditional Wizard... Even if we hand-code the entire scan script we are still constrained by those limits... Do you have any scan code completed as yet...??? If so, post it for review...


New member
I was just trying to set up in condition wizard. I want to scan for when the daily candle crosses a standard Deviation in ttm lrc.


Well-known member
Work up what you can and we'll review it to see what else might be required... Learning to code for yourself is an expectation here...


Well-known member
seems like a pretty simple question that would be easy to answer if you knew what your doing.

Yes, but learning is an expectation here... Just handing out code on request doesn't accomplish anything other than waste a lot more of other peoples time than the person wanting... You get to sit back and wait while someone else does all the work... Does that sound fair to you because it doesn't to me... We're trying to instill in members that they need to learn because that's an expectation... We're not here to make other people rich for free... Don't expect members to feel sorry for you because you don't want to make an effort... If you have made an effort, post what you have...

The problem here is that, unfortunately, @BenTen has a tough time saying what needs to be said - but I don't... This ain't my first rodeo and I've seen far too many forums devolve into a shit-show of people not making any effort and then members who can help get burned out and stop coming by and contributing... Trust me, it happens far too often... And I'm sure it has already happened here...

Whining because someone says what you need to hear instead of what you want to hear is not an admirable trait... I'm not mad by any means, I'm just upfront and honest... Sometimes you just have to say it the way it is... If someone's feelings get hurt then what was said was most likely true...

All that said, "you" doesn't necessarily mean you, it goes for anyone asking more than trying...


New member
I created 4 scanner conditions as below that appear to be similar if not the same but found that the scanner results are not consistent, some sending notifications more frequently or reliably than others. I was curious if there are factors to consider that are not too obvious to the end-users such as scanning intervals, some priorities are set on the server side, or nuances in the studies/functions.
  • built-in study RSI_Scan to trigger when RSI is greater than 70
  • built-in study RSICrossover to trigger when RSI crosses above 70
  • custom study RSI() >=70
  • custom study RSI() crosses above 70
When I modified the built-in RSI study slighty to send alerts using "crosses above" function and added to my charts (not scanner), none of the above triggered as often as the modified study in chart. My goal is to send push notifications and email to my phone when certain indicator conditions are met. Thank you for any suggestions.
Last edited:


New member
Do alerts work on watchlist's custom column?

I have the code below I grabbed from some post here, and I added it to a custom column of a watchlist.
It shows VWAP in green or in red depending if the price is above or below the VWAP. That works fine.

But it doesn't trigger the alert (two last lines in the script)

Any ideas?

# EMA and VWAP cross. Modified 2 ToS studies and added  labels for crosses. By Horserider 7/21/2019
# Redid label and added cross arrows.

input timeFrame = {default DAY, WEEK, MONTH};
def cap = getAggregationPeriod();

def errorInAggregation =
    timeFrame == timeFrame.DAY and cap >= AggregationPeriod.WEEK or
    timeFrame == timeFrame.WEEK and cap >= AggregationPeriod.MONTH;

assert(!errorInAggregation, "timeFrame should be not less than current chart aggregation period");

def yyyyMmDd = getYyyyMmDd();
def periodIndx;

switch (timeFrame) {

case DAY:
    periodIndx = yyyyMmDd;

case WEEK:
    periodIndx = Floor((daysFromDate(first(yyyyMmDd)) + getDayOfWeek(first(yyyyMmDd))) / 7);

case MONTH:
    periodIndx = roundDown(yyyyMmDd / 100, 0);

def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;
def volumeVwapSum;
def volumeVwap2Sum;

if (isPeriodRolled) {

    volumeSum = volume;
    volumeVwapSum = volume * vwap;
    volumeVwap2Sum = volume * Sqr(vwap);

} else {

    volumeSum = compoundValue(1, volumeSum[1] + volume, volume);
    volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);
    volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));


def price = volumeVwapSum / volumeSum;
def VWAP = price;

input price2 = close;
input length = 8;
input displace = 0;

def AvgExp = ExpAverage(price2[-displace], length);

AddLabel(yes, "VWAP Cross", if avgexp > vwap then Color.GREEN else color.RED);

input showBreakoutSignals = no;
plot UpSignal = avgexp crosses above vwap;
plot DownSignal = avgexp crosses below vwap;



Alert(UpSignal, "Buy", Alert.Bar, Sound.Ding);
Alert(DownSignal, "Sell",, Sound.Ding);


Well-known member
@kkrac No, we cannot trigger alerts from within Custom Watchlist Columns... The Alert() code will be ignored... There is no fix for this...

Similar threads