Skip to Content

Maximize Engagement
Minimize Churn

Push Notifications, Email, SMS &In-App Messaging to drive engaged and loyal customers.

Get Started Now Contact Sales

No credit card required.

Trusted by over a million businesses

Key to Success for Marketers

Connect with your audience the right way

15 Minute Setup

Our users are always shocked at how easy it is to get started.

Real-Time Reporting

View delivery and conversion performance for every message.

Incredible Scalability

Millions of users? No problem. We send out billions of notifications daily.

A/B Testing

Compare message performance and automatically send the best.

Superior Segmentation

Create personalized messages and send them to the right audiences.

Automated Messaging

Set it and forget it. You can trigger notifications based on user behavior.

Intelligent Delivery

Leverage machine learning to send your messages at the optimal time.

Analyze Results Anywhere

Our SDKs are open source and every component is accessible via API.

Loved by Developers

Our founders were developers who built SignalAiML out of a personal need. We've made it easy for any business to get running and to get amazing results.

Apple iOS
                                            
                                                import
                                                SignalAiML


                                                
                                                    func
                                                    application
                                                    
                                                        (_
                                                        application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any
                                                        ]?)
                                                    
                                                
                                                ->Bool
                                                {

  SignalAiML
                                                .initWithLaunchOptions(launchOptions,
    appId: "YOUR_APP_ID"
                                                ,
    handleNotificationAction: nil
                                                ,
    settings: [kOSSettingsKeyAutoPrompt: false
                                                ])

  SignalAiML
                                                .inFocusDisplayType = OSNotificationDisplayType
                                                .notification;

  SignalAiML
                                                .promptForPushNotifications(userResponse: { accepted in
                                                print
                                                ("User accepted notifications: \(accepted)"
                                                )
  })

  return
                                                true
                                                }
                                            
                                        
Android
                                            
                                                import
                                                com.SignalAiML.SignalAiML;

public
                                                
                                                    class
                                                    YourAppClass
                                                    extends
                                                    Application
                                                
                                                {
   @Override
                                                
                                                    public
                                                    void
                                                    onCreate
                                                    ()
                                                
                                                {
      super
                                                .onCreate();

      SignalAiML.startInit(this
                                                )
        .inFocusDisplaying(SignalAiML.OSInFocusDisplayOption.Notification)
        .unsubscribeWhenNotificationsAreDisabled(true
                                                )
        .init();
   }
}
                                            
                                        
Web Push
                                            
                                                
                                                    <head
                                                    >
                                                
                                                
                                                    <link
                                                    rel
                                                    ="manifest"
                                                    href
                                                    ="/manifest.json"
                                                    >
                                                
                                                
                                                    <script
                                                    src
                                                    ="https://image-bucket-pearl.vercel.app/cwimages/sdks/CwAiMLSDK.js"
                                                    async
                                                    >
                                                
                                                
                                                    </script
                                                    >
                                                
                                                
                                                    <script
                                                    >
                                                
                                                
                                                    var
                                                    SignalAiML = window
                                                    .SignalAiML || [];
    SignalAiML.push(["init"
                                                    , {
      appId
                                                    : "YOUR_APP_ID"
                                                    }]);
  
                                                
                                                
                                                    </script
                                                    >
                                                
                                                
                                                    </head
                                                    >
                                                
                                            
                                        
React Native
                                            
                                                import
                                                SignalAiML from
                                                'react-native-SignalAiML'
                                                ;

export
                                                default
                                                
                                                    class
                                                    App
                                                    extends
                                                    Component
                                                
                                                {
  constructor
                                                (properties) {
    super
                                                (properties);
    SignalAiML.init("YOUR_APP_ID"
                                                );

    SignalAiML.addEventListener('opened'
                                                , this
                                                .onOpened);
  }

  componentWillUnmount() {
    SignalAiML.removeEventListener('opened'
                                                , this
                                                .onOpened);
  }

  onOpened(openResult) {
    console
                                                .log('Message: '
                                                , openResult.notification.payload.body);
    console
                                                .log('openResult: '
                                                , openResult);
  }
}
                                            
                                        
Unity
                                            
                                                using
                                                System.Collections.Generic;


                                                
                                                    void
                                                    Start
                                                    (
                                                    )
                                                
                                                {
  SignalAiML.StartInit("YOUR_APP_ID"
                                                )
    .HandleNotificationOpened(HandleNotificationOpened)
    .EndInit();

  SignalAiML.inFocusDisplayType = SignalAiML.OSInFocusDisplayOption.Notification;
}


                                                
                                                    private
                                                    static
                                                    void
                                                    HandleNotificationOpened
                                                    (OSNotificationOpenedResult result
                                                    )
                                                
                                                {
  // use notification opened result here
                                                }
                                            
                                        
Flutter
                                            
                                                void
                                                main() {
    SignalAiML.shared.init("YOUR_APP_ID"
                                                , {
        OSiOSSettings.autoPrompt: false
                                                });
    SignalAiML.shared.setInFocusDisplayType(OSNotificationDisplayType.notification);

    SignalAiML.shared.promptUserForPushNotificationPermission();
}
                                            
                                        

Code in any language. We provide native support for every development environment.

Explore Developer Frameworks

Limitless Integrations

SignalAiML integrates with leading analytics, CMS, and eCommerce solutions including Amplitude, Mixpanel, Segment, HubSpot, Shopify, WordPress, and many more.

Sync audiences and user data to trigger real-time messages.

More Integrations
John Turner
With more than 60 owned and operated sports sites, the USA Today Sports Media Group relies on SignalAiML to get the right content in front of the right fans. From notifications on desktop browsers to targeted deep-links into our SportsWire app, SignalAiML has made engaging our readers fast, simple and effective.

Leading G2 Messaging Provider

Highly recommend — came for push notifications, stayed for a suite of customer comms tools.
David P

CEO and Co-Founder, Small-Business

Awesome solution with great Customer Service.
Bruno P

RevOps Leader, Small-Business

Versatile platform, delivers what it promises, simple usability but powerful features.
Alexandre P

Backend Developer, Enterprise

Get Started Today For Free With Our Tool

We’ll get you going in a matter of minutes.

Get Started Now Contact Sales

Have questions? Chat with an expert.