You are currently viewing Marketing and Twilio SMS  Campaigns fixation

Marketing and Twilio SMS Campaigns fixation

  • Post published:January 22, 2020


Team span: Currently Active
Implementation Duration:  Duration: 1 month
Technology:  Ruby on Rails, MySql, SideKiq
Development Manager:  Shahroon Ali
Engineer:  Shahzad Tariq & Tabish Saleem

National Career Fairs (NCF) company has held over 20,000+ career fairs nationwide USA and have had more than 5 million job seekers attend career fairs over the last 19+ years.

NCF is helding approximately more than 5 job career fairs events in a single day, sending more than 4,000,000 marketing emails of (90, 60, 45, 30, 15, 14, 12, 10, 2 days before event and post event stats emails) to the job seekers/employers of a single event and also sending huge amount of marketing Twilio SMS and Voice calls.

Marketing emails, Twilio SMS  and Voice calls need to scale and deliver on the time

  • Large number of marketing emails campaigns were missing and even delivering after the desired date due to huge volumes of emails, i.e. more than 4,000,000 emails on on daily basis.
  • Number of Twilio SMS  were received to jobs seekers/employers after the event date.
  • Voice calls were receiving to the customers over the night

To figure out these issues, we used SendGrid stats, Twilio stats, New Relic stats and application, background services logs and analyzed source code in-depth

  • In the past, client had two Amazon EC2 servers, one for Ruby and Rails application & database and other server was for the marketing emails/SMS/Voice calls management that was remotely connecting to the Rails application server
  • Facing database connection lost issue because most of the complex scenarios and exception handling was not implemented
  • Background process management (Delayed_jobs) was unable to handle huge volumes of concurrent requests


  • Previously used background tool was outdated and creating issues of memory leakage that we have replaced with advanced background job tool (i.e. SideKiq) to overcome memory leakage issue and minimize load on server and memory as well
  • We have also updated source code architecture, optimized database queries to make scale to this product
  • Develop a campaign portal where admin can create any dynamic Email/SMS/Voice campaign, set targeted/recipients group and schedule time of triggering campaign
  • Used Redis server to store background jobs instead of database
  • We have also added a feature to trigger Emails/SMS/Voice calls campaigns manually in case of campaign failed


Campaigns are triggering on time, Voice calls are triggering to recipients on desired time, optimized load on database server.