Batch for developers

A few good reasons to use Batch Mobile engagement & Web push platform.

Sure, Batch is mostly for your colleagues in marketing – but you’re the one doing the integration job. Over the years, we’ve digged deep into this weird duality and we know that, when marketing wants something, it’s usually bad news for tech. We feel you.

But worry not. Batch is first and foremost a platform built by developers, for developers. We come from an infrastructure background, while our platform has evolved over the years into an advanced marketing automation suite. And that’s why you’ll find integrating our SDK a walk in the park.

Also, this is where we come from: we’re not just another ‘freemium’ service. We take security seriously. Sure our service doesn’t come for free, but it makes us a sustainable partner you can truly rely on. A partner you can ping 24/7 and get on the phone when you need it. We won’t disappear tomorrow. We won’t shut down on a whim. Ultimately, we won’t resell your app data. This is how our ‘freemium’ competitors finance themselves and we will never do that.

10 000 000 000
monthly tracked events
1 000 000 000
downloads of the Batch SDK
2 000 000 000
notifications delivered each month
new users per second

An incredibly scalable platform

Having scaled an app ourselves up to 50M installs worldwide and more than 4M daily uniques, we knew first-hand what needed to be done when we set out to build a highly scalable platform able to track tens of billions of monthly events.

That’s why we chose to use Cassandra, the NoSQL open source database invented by Facebook and used in production at Apple, Spotify and Netflix – engineers on our team happen to be top Cassandra experts and regular conference/tech workshops contributors so we were able to bring in a lot of expertise at the architecture level.

The Batch platform relies on hundreds of microservices revolving around a central system: Apache Kafka, a unified, low-latency, real-time, data hub. Each message entering our infrastructure is updated, indexed and stored into Cassandra after going through dozens of services, giving us horizontal scaling capacity and unfair advantages on the delivery rate side of things – this is one of the reasons why Batch is so fast.


Forget APNS, GCM and WNS complexity

Get rid of the complexity of having to deal with multiple platforms – Batch has your back on all the eventualities, undocumented updates and phoney behaviors that are inherently part of rapidly evolving, low-level platforms.

Do you realize push tokens change all the time? Users update their devices, restore an old backup, install-uninstall-then-reinstall trying to solve performance issues, also Apple or Google will perform-wide tokens resets without warning, etc. It’s happening constantly. And does the idea of having to deal with canonical tokens give you a headache? Let our platform work for you here – you have more important stuff to do.

At the implementation level, we recommend you use the Batch Custom IDs – creating a true layer of abstraction at the user-level, even supporting integrations with Facebook Login, Twitter Login, Emails and more, to give you maximum flexibility and let you seamlessly outsource us the heavy duty of interfacing with Google & Apple’s constantly changing APIs, while keeping your token base constantly up-to-date.


Supporting the most recent push certificates & platform updates

Our engineering team is in regular contact with engineers at Apple and Google in charge of updating the platforms. For example, we took part in the beta-testing sessions of Apple’s HTTP/2 back in June 2015 and had pushed in production by year’s end, while maintaining the legacy API.

With Batch you’re always sure to get the freshest, most up-to-date benefits of platform upgrades – another example: we delivered to our developers community Apple’s new P12 Certificates as soon as it became available, letting folks deal with both DEV & PRODUCTION environnements with the same certificate.


100% API-based platform

Before everything else, Batch is a set of APIs, making any third party integration ridiculously easy. Look at our dashboard, it’s using our own public APIs.

Take a feature, and plug it in an existing dashboard of yours. Access and export your campaign reports anywhere. Trigger campaigns from the comfort of your back-end. Command multiple apps at once. Possibilities are endless.

We offer RESTful APIs: ‘Campaigns API’ lets you deal with 1-to-many and ‘Transactional API’ for 1-to-1 interactions. These APIs benefit from an abundant and constantly updated documentation and are pretty easy to use. Ultimately, they come with a set of troubleshooting tools such as debug IDs which may facilitate discussions with our support team the case may be.

You can learn more here:


Sample apps on Github

If following a lengthy documentation tutorial seems tedious to you, and you’d rather jump right into it with some code samples, know that we’re hosting and maintaining samples apps on Github (@BatchLabs) showing you how a proper integration is done, and where to place your calls.

Get your first notifications sent on your sample app in a matter of minutes: as simple as a Github repository cloning.

On the right of your screen, check out Kevin’s tweet about getting his first notifications sent in under 5 minutes.


Built-in troubleshooting tools

With the years, we’ve developed a set of troubleshooting tools accessible right from the Batch dashboard.

Just got to Dashboard > Settings (⚙) > Debug and search your users using their Custom ID or Installation ID to visualize instantly the properties and attributes Batch stores for them – for you.


A resilient SDK designed to prevent data losses

Losing data. No one likes that. That’s why our SDK was designed from the ground up with risks of data losses in mind because we know mobile is complicated: networks fail, apps tend to crash, WiFi can be slow, people go from Airplane or Do not disturb mode to regular mode, all the time.

Hence, connection is never always on.

What our Batch SDK does: it stores everything on the device’s hard drive – using sqlite – before attempting any server syncs. That way, if anything wrong happens – and well, you know wrong things happen – you’re always sure that your app or user data is stored somewhere and will ultimately make its way safely to the server.


No external dependencies or hidden libraries

External dependencies are not welcome in the Batch SDK and we do not use any foreign libraries, greatly limiting any security, performance, unwanted weight or conflicting code problems. (However, you still get to embed stuff like Google Play Services since it’s been made mandatory by Google to use GCM).


Very few permissions requested

The Batch Android SDK only requires 3 permissions and we’ll have you validate each and everyone of them manually for optimum control.

  1. Internet Access
  2. Vibration

*WAKE_LOCK as per Google recommendation – specifically, Batch will make use of WakefulBroadcastReceiver to prevent the device from going into sleep mode when the push payload is parsed. When a push notification is received, code is run app-side to parse the payload: it may happen that, during this interim, the devices goes into sleep mode. That’s specifically where Batch makes use of WAKE_LOCK, during a very short moment, to always make sure delivered notifications are actually display on screen, and hopefully seen. Impact on CPU is minimal and this request for this permission will not prevent Google Play auto-updates to run like it happens with other permissions such as Contacts, Geolocation etc.


Light SDK footprint

Our iOS SDK weighs in at only 13mo – extremely light considering that it supports every existing iPhone, iPod and iPad version out there. But while fragmentation does make things heavier, note that the end user only downloads one version.

On the Android, things remain very light: 400ko.


Data/silent pushes support

Data/silent pushes – they’re so useful to communicate with the device without bothering user ever noticing – and that’s why we fully support then to push minor updates, preload data, update user information, and many other useful things.


Custom payload support

Batch gives you full control over the push payload. On the dashboard, go to Dashboard > Push > New push campaign > Advanced settings and paste your JSON code to override and take control of the payload behavior. Talk to us for code samples, we’ll send you what you need since it’s likely we’ve already encountered the case. Ultimately, use our ‘Send a push to myself’ feature to test expected behaviors of your push campaign before going live.


Maven/Cocoapod support

When and where you need them: Maven and Coacoapods are now market standard dependency managers and Batch supports both – and if you don’t use them, just get our SDKs on our download page. Go to:


Mighty efforts on our documentation

We’re Documentation *maniacs*—that’s why updated information is added there daily. Get started on: ; use the “Search” filed to fasten things up and ping us with questions anytime.

We thrive on outstanding tech customer support and our Documentation is the cornerstone of our organisation on that front. Also visit:


Last but not least: building a secured platform

Last but not least, we take security seriously. By design, all our processing & database servers live in a private network with no web access. SDK <> Web-services communications are HTTPS protected (TLS 1.2) and payloads are AES256 dynamic key encrypted. Ultimately, all our datacenters are based in Europe.