Having trouble using programmable SMS through Zapier & Google Sheets - google-sheets

im new to this form and joined because I use Twilio for my business and had no other place to go for help. Long story short, I sometimes use my Twilio number to send text messages to our customers regarding new products/updates - usually 500 - 1000 messages at a time (over the period of maybe once or twice a month).
Usually how I use Twilio is through ZAPIER, once a contact has a certain tag added from my CRM, I set it so that the tagged contacts will get a text message - it usually works but in May I've tried it several times and it hasn't worked at all.
So I switched to using Google sheets with the script feature of adding my Twilio information and tapping "send sms" on top (Today was the first time I used it). Initially it said all of the messages were sent, but when I checked my Twilio balance - it was relatively the same... so I dug deeper and checked my logs, I realized that all but 3 of the 550 text messages were "delivered" and only those three were received.
It seems like there is some type of issue, as its impossible that only 3 people would open a text message - I usually get a good amount of interest from these blasts.
When I used Zapier this month none of the messages would even get sent, so I'm not sure what's going on.
Has anyone dealt with anything like this? Please share! NOTE: Im a newbie here.

Related

Which specific Google Ads Endpoints to use for Conversion Tracking Redundancy and Offline Conversions via GCLID?

My site has 3 "conversion" events:
User signs up for the site by providing their email (GCLID is known and a pixel fires)
User starts a free 7-day trial (by submitting a CC) (GCLID is known and a pixel fires)
User becomes a full member if CC is charged by Stripe on the 7th day (GCLID is known, no pixel because this occurs at Stripe)
My questions are:
For the first 2 events, which API endpoint is best to send this data to Google to make sure 100% of conversions are attributable via the GCLID?
For the last event, which API endpoint is best since Google will not be aware this subscription took place?
In the campaign setup, I'm optimizing for all 3 events and they are ranked by conversion value (full member is worth say $50, trial is $1, and providing email is $0.50).
I did notice a few threads that appeared similar, but couldn't find a use case that covered both scenarios, so figured I'd ask.
Just to further clarify, it'd be like this in order of events:
User joins newsletter. A pixel fires. I also send this conversion via API for redundancy
User signs up for a free trial. A pixel fires. I also send this conversion via API for redundancy
User becomes a full member after trial ends automatically. A pixel does not fire. I send this conversion via API because there is no pixel and this is the ultimate goal of the campaign.
Three different conversion goals are setup in Measurement > Conversions, the last of which is "offline".
Appreciate any insight or help.
Thanks,
ENDPOINTS CONSIDERED:
For the 3rd event, I was considering using the following:
https://developers.google.com/google-ads/api/docs/conversions/upload-clicks#upload_clickconversion
For the first 2 events, I was considering using the following:
https://developers.google.com/google-ads/api/docs/conversions/enhance-conversions?hl=en
However, when I asked this question in the Google Ads API forum, the answer I received reversed these two, which I am not sure is correct.
Additionally, the documentation related to Google Enhanced Conversions (https://support.google.com/google-ads/answer/9888656?hl=en) state that you can use the Google Ads API for the "set up enhanced conversions for web", but for "set up enhanced conversions for leads" it doesn't specify the Google Ads API is an option.
In that specific context, I'm not clear on which is better to use.

Twilio: Is there a way to export all opt outs?

I want to export everyone who has reply stop (opt out) for my messages. I see that my options are
API. However, through the API I can see that I get everything in pages of 50 messages, so I have to go and do a lot of code to go page by page, message by message just to check if the content is stop. Seems a bit unnecessary for a 1 time job.
From the console in my account, however when each time i try to filter on status received I get the following error, and when I dont filter I get error:
Your export request has more than 10,000 records, please filter your results and try again.
Surely there must be an easy way that I can get all the list of numbers that had opt out?
This answer above is not strictly true as of October 2020. Twilio now has an "insights" dashboard that allows you to view and download "Opt outs Received". When you click on that dashboard you are able to see and download the information.
It is under: Programmable Messaging -> Monitor -> Insights
Our account has "Opt-Out Management" enabled and this addition has been a game changer in finding out what users have or have not done in our system.
There isn't a way to export all opt-outs for LC's/TF's that Twilio maintains on your behalf but opt-outs are forwarded to your application for logging as well as added to the Twilio maintained opt-out list. Your application can keep track of the opt-outs this way. You can find more details in the Help Center article below.
Twilio support for opt-out keywords (SMS STOP filtering)
"When Twilio receives one of these replies, we will create a "blacklist" entry on our side, and then pass the message on to your webhook. Once we have a blacklist entry for a particular recipient phone number, any future attempts to message them will be met with a 400 response from our API, along with Error Code 21610 - Message cannot be sent to the 'To' number because the customer has replied with STOP. Recipients can disable this message stop, and resume receiving messages with the START, YES, or UNSTOP commands as outlined below."
Also, if you use the Twilio helper library for the respective language, it handles the paging for you, for example, for Node.js, reference.
Usage and Migration Guide for Twilio's Node.js Helper Library 3.x
"One of the biggest advantages of twilio-node 3.x is that it automatically handles paging for you! In both list and each, you can specify the maximum number of instances to grab (limit), and the page size (pageSize). The library will take care of everything else."

Twilio SMS - How to prevent further replies?

I made a simple chatbot using the studio template and it works fine. However, it then loops after the last response. So let's say I give the user 2 choices, Y and N. After they say Y they get a response but if they message the bot again they get the initial message once again to loop the process. How do I stop this? In the docs I only found info on how to stop all incoming messages but this isn't what I want. I just want to end the convo for good as in my application it has a one time use intention. Thanks.
Twilio developer evangelist here.
There's not really a way to stop incoming texts. What you want to do in this case is stop responding to an incoming text after the initial flow through.
The way to do this would be to use Twilio Functions and function widgets to store the numbers that have successfully completed the questions (you could use any database for this, if you want to keep it within Twilio then Twilio Sync can help here). Then you can insert a function widget at the start of the flow that retrieves whether the number messaging has completed the questions and combine with a split widget to decide whether to send the first message or just complete the flow.
Let me know if that helps at all.

Twilio carrier info error code 61003 with Australian number

we recently started using Twilio lookup with the Carrier Info add-on to validate phone number format and determine the number type (mobile/landline). Most of our numbers have been U.S. or UK and we haven't had a problem.
Today we encountered our first Australian number and it caused an error for the Carrier Info portion of the response, specifically code 61003, "Requirements to invoke AddOns have not been met." The basic lookup portion of the response, with country code, number format, etc., is fine.
However, when I try the same number on the public-facing Twilio web page (https://www.twilio.com/lookup) the whole lookup including carrier info works fine.
Does anyone know if there are different API call requirements for numbers in different countries? Or what else might be wrong? Thanks in advance for any help.
The answer seems to be that this was a temporary error at Twilio. After the weekend, and without any changes in my code, the same number worked fine. Twilio support said they weren't aware of any problems with the service but that they would alert the engineering team that this had happened.

Adobe Analytics Slicing Tags

I have an iOS app where I have analytics setup (as most people do) that tracks a whole set of different scenarios. In a few of them, the data I send with the tag doesn't all get sent. What I mean by this is best demonstrated with an example. If I send the following data as a tag in one of my analytics:
User successfully logged into the app and hit the homescreen
Now, I wouldn't normally send all of that in just one tag, it would get broken up, but for example purposes, pretend that's what I want to send. For quite a few users, tags like this will get sliced up into all sorts of different tags, so when I actually look in SiteCatalyst, I end up seeing a bunch of tags that may resemble something like so:
successfully logg
nd hit the homescreen
User successfully logged into the app and hit the homescreen
User successfully logg
And so on. It breaks it up into a bunch of different parts, and then displays them all as separate tags. The ones that are affected get broken up into 15-20 different tags all of which are different parts of the full tag.
Here is the hard part: I can't reproduce the issue. I'm trying, but haven't been able to yet. I also am not very well versed in Adobe analytics and am not sure how the backend setup is for us on SiteCat.
Because of my inexperience with analytics, I'm not sure what more data may be helpful. My code doesn't do any truncation, it simply calls trackAppState:withContextData:, and the tags in my contextData get truncated like I showed.
Does anyone know why this is happening? Has anyone seen anything similar? Or could anyone point me in a direction that may get me started looking into this issue? I'm really at a loss of how to go about debugging this issue.
Edit: One piece of info that just hit me! I build up the tag in question (at least the current one I'm trying to reproduce, for all I know there are other tags that get truncated that aren't built up like this, I haven't gotten a chance to look into all of them yet.) using `-[NSString stringWithFormat:] and take the errorMessage that is returned as my message, so it's a dynamic tag.
It may have something to do with the stringWithFormat: message? Again, very lost as to where to even start with this one.
can you give us a sample of the code you use to call the trackAppState?
If it can help you you can enable debug logging for the Adobe Analytics library calling the method [ADBMobile setDebugLogging:YES]; in the appDidFinishLaunchingWithOption.
In this way you can see in the console how Adobe send the data.
You can also use the tool "Bloodhound" which is a proxy App developed by Adobe expecially for osx in order to let you sniff all the info sent by your App in real time, you can find it in the help section of the mobile marketing interface.
Thanks,
Claudio.

Resources