Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Learn how to track your Batch push and in-App campaigns in Mixpanel.
As a marketer what you want is a global and cohesive view of your entire traffic sources & marketing campaigns inside your analytics suite. Without having to compromise on your effective working habits.
Using the Batch x Mixpanel integration lets you track your entire push notifications and in-app messaging inbound traffic sources inside Mixpanel like you would with any other traffic source.
The Mixpanel dispatcher uses the from your campaign to dispatch a new set of data to Mixpanel.
Once the dispatcher is installed, you will be able to track related to your push or In-App messaging campaigns on Mixpanel.
If you haven't already installed the Mixpanel event dispatcher, please read our technical documentation for and .
The dispatcher gathers the values of utm_campaign, utm_source and utm_medium from the deeplink URL and from the custom payload of your campaign.
The tags utm_source and utm_medium are optional because they have a default value of batch and push accordingly.
You can add utm_content only in the deeplink URL in case your push notification has several different buttons.
The dispatcher gathers the value of utm_campaign from the field Tracking ID of your campaign.
You can't customize the $source and utm_medium tags, they have a value of batch and in-app accordingly.
You can add utm_content only in the deeplink URL in case your in-app message has two different buttons.
Push notification clicked: Triggered when a push notification is clicked.
Push notification dismissed: Triggered when a push notification is dismissed (only available on Android).
Message showed: Triggered when an in-app or landing message appears on the screen.
Message closed: Triggered when an in-app or landing message is explicitly closed by the user (using the close button or a dismiss CTA/Global tap).
Message auto-closed: Triggered when an in-app or landing message is closed by the auto-close timer.
Message clicked: Triggered when an in-app or landing Click-To-Action is clicked or when the in-app/landing is global tapped (except if the CTA/Global Tap is a dismiss, then a closed event is triggered).
Batch + Firebase + Google Analytics = Free cross-platform reporting tool !
During the summer of 2019, Google announced a new feature allowing marketing teams to merge analytics from mobile applications and websites into one tool. The feature is now available as a beta on Google Analytics new properties App + Web. It gives access to the new Analysis hub, where both data from your website and your applications are available.
Today we are going to set up your Firebase and Google Analytics accounts to make these new features available with the data of the Batch SDK.
First, we need to wire up Batch SDK to Firebase. The easiest way to achieve this is to install the Firebase Events Dispatcher into your application. This small plugin will make Batch's data available on your Firebase dashboard. More details are available in our technical documentation for and .
Once your Firebase project is created and set up with the Batch SDK (and the dispatcher installed), you need to link your Firebase project to a Google Analytics property.
Go to your , select your project, click on the โ๏ธ in the top left corner, and then on Project settings. On the new page, click on the Integrations tab.
Go to your , you should see a new property in your account, labelled as App + Web:
Select that new property, then click on โ๏ธAdmin in the bottom left corner, then click on Data Streams in the property column. Under the All data streams tab, you should see your applications (Android and/or iOS) from your Firebase project (if you do not have any applications in your Firebase project, then click the Web
Now that you have data on your dashboard, we will need to flag specific events and parameters from the Batch SDK. To achieve this, go back to your , and click on Analytics > Events in the left menu.In the list you should see events starting with batch :โ
If you canโt see them, make sure the Firebase dispatcher is correctly installed and working (you can send a test push from the Batch dashboard to create events on your Firebase Dashboard).
Learn how to track your Batch push and in-App campaigns in Firebase.
Firebase Analytics, and in its latest form, Google Analytics for Firebase, is an extensive analytics solution that enables brands to measure relevant KPIs on their app and how their users interact with it. Those key metrics will enable Batch customers to get clear performance data of their campaign, and also better understand the behaviour of users in order to encourage conversion scenarios within the app.
You can easily establish this connexion by completing the following steps:
The Firebase dispatcher uses the (like on a lot of Google services) from your campaign to dispatch a new set of data on Firebase.
Once the dispatcher is installed, you will be able to track related to your push or In-App messaging campaigns on Firebase.
If you haven't already installed the Firebase event dispatcher, please read our technical documentation for and .
Note: The since October 2019 for non-Google Analytics 360 customers, meaning if you still use it on a free Google Analytics account, no data will be available and you must migrate to Firebase.
This guide explains how to enable tracking of Piano Analytics campaigns to track Batch's web and mobile campaigns.
Piano Analytics is an advanced analytics platform that enables you to:
Collect and leverage high-quality data across your websites and applications
Use a powerful and flexible platform to improve your performance
Integrate with a rich ecosystem of partners, including Batch
Track web push notification opens in Piano Analytics by adding tracking parameters to your deep links.
Use AT or UTM Parameters in Deep Links
AT parameters:
Add at_medium and at_campaign parameters directly to your deep links or in the payload. Follow Piano Analytics for formatting and parameter usage.
UTM parameters: Use UTM parameters if you configure Piano Analytics to recognize them. Refer to the Piano Analytics for configuration steps.
Add Parameters to Your Deep Link
Use Batch's Piano Analytics event dispatcher to send campaign data from your mobile app to Piano Analytics.
Install the Piano Analytics Dispatcher
Install the dispatcher for Android or iOS. Refer to the technical documentation to configure the dispatcher in your mobile app ( / ).
The dispatcher extracts AT or UTM parameters from the campaign and sends the data to Piano Analytics.
Understand Piano Analytics Traffic Attribution
Piano Analytics uses the first detected campaign per session as the Traffic Source. However, Batch can trigger multiple campaigns during a single session.
Yes! Thanks to a quick client-side integration, you will be able to see campaigns opens with AppsFlyer.
AppsFlyer is extensive analytics that helps brands keep track of their attribution and engagement campaigns while providing a large variety of analytics.
This client-side integration will allow you to retrieve Batch push notifications that opens in the Retargeting section as in the screenshot below:
Depending on your Firebase configuration, you might not have enabled Google Analytics for your project.
If you see the option Enable on the card, then you need to choose or create a Google Analytics account on which your applications' data will be linked (a new property App + Web will be automatically created in the selected Google Analytics account).
If your Firebase project is already linked, you need to make sure to upgrade your link to gain access to the new beta features.
To do so, click on Manage then under your Google Analytics configuration, a banner will offer you to Begin upgrade, click on it, then choose or create a Google Analytics account on which your applications' data will be linked (a new property App + Web will be automatically created).
Note: If you can't see the banner, it's probably because your Google Analytics link has already been upgraded, simply move on to the next step.
Click on the Web tab, and move on to the next step.
If you donโt have Google Analytics on your website, you can add one now, data will be directly merged with your applicationโs data.
On top of the form, fill in the Website URL and Stream name of which you want to track data and then click Create Stream.
Optional: Click on the Web tab, and under Tagging Instructions > Add new on-page tag follow the instructions to add Google Analytics to your website. If you donโt know how to do it, you can skip this step but keep in mind that your website data wonโt show on your dashboard.
If you already have Google Analytics tracking your website, you need to fill in the exact same Website URL as in your property (you can find it under โ๏ธAdmin > Property Settings > Default URL), also fill in the Stream name input, then click on Create stream.
Now under Tagging Instructions > Use existing on-page tag, expand the Google Analytics block and follow the instructions to add your new Measurement ID to your existing property.
Congratulations! You have successfully set up the new Google Analytics dashboard App + Web. You can now access data from your website and your app on the same dashboard, take a look around, for example under Technology in the left menu, you can now inspect platform-specific metrics.
Note: you may have to wait 24 hours to see website data in your dashboard, but if you can see the Technology > Web option in your menu, your configuration is done.
For each Batch event, a set of parameters is available (corresponding to your UTM tags), to set one click on the three dots at the end of the line of any batch event and click Edit parameter reporting, in the modal, you can add any of the following parameters (always as Text type).Here is an example of the batch_in_app_show event after being configured:
Note: youโre limited to 50 text parameters per Firebase project, so you should only set up parameters that you want to use in your reports, if you donโt know which one to use yet, start with the campaign parameter and move on to the next step.
Go back to Google Analytics dashboard, click on Analysis > Analysis Hub, then click on the + card on top of the page to create a new analysis.In the left menu click on the + next to Dimensions, in the list showing on the right side of the screen you should find the parameters you have added on the Firebase dashboard, check them to add them to your analysis.
You can now use those dimensions to draw graphs and tables!


The tags utm_source and utm_medium are optional because they have a default value of batch and push accordingly.
You can add utm_content only in the deeplink URL in case your push notification has several different buttons.
The dispatcher gathers the value of utm_campaign from the field Tracking ID of your campaign.
You can't customize the utm_source and utm_medium tags, they have a default value of batch and in-app accordingly.
You can add utm_content only in the deeplink URL in case your in-app message has two different buttons.
โ ๏ธ Please note that the event dispatchers are only available from Batch's 1.15 SDK version and above. If you use an older version of Batch's SDK you can integrate the Firebase Batch plugin. However, this only allows you to track push opens and retrieve the campaign's UTM parameters.
The plugin's job will be to read Batch's notifications clicks and extract the right parameters before sending them to Firebase.
Start by copying the FirebaseBatchIntegration class to your project. The code can be found here :
As shown in the BaseActivity example of the gist, you will have to call FirebaseBatchIntegration.handleIntent in every activity, both in onCreate and onNewIntent.
Copy the FirebaseBatchIntegration class in your project. The code can be found here (Swift 4.2):
Then, as shown in the gist, simply call
in applicationDidFinishLaunchingWithOptions before Batch.start(withAPIKey:)
If you call this method after starting Batch, the integration may work incorrectly.
Once you integrate the plugin, you can add your UTM parameters to your campaign's deeplink as described in section 2.a of this article.
Execute the following command to turn on the analytics debug mode on your Android device:
Once you finish debugging, make sure you turn off the debug mode using this command:
Specify the following line argument in Xcode to turn on the analytics debug mode on your iOS device:
Once you finish debugging, make sure you turn off the debug mode by specifying this line argument in Xcode:
On Firebase, go to Analytics โ DebugView. You should see your device and Batch events as soon as you receive, open a push or display, close, click an In-App message.
Append your tracking parameters to the push campaign deep link. For example:
After implementation, Piano Analytics will track users who open the notification. The source of their visit will reflect the value of the at_medium parameter.
The Marketing Campaign module
The On-site Ads module
Marketing Campaign module: Only the first campaign detected during a session appears as the official traffic source in the Piano Analytics dashboard. Other campaigns appear as event properties.
View this data in:
Traffic Sources > Marketing Sources
Content > Pages
On-site Ads module: This module tracks ad impressions and clicks per campaign. It ensures visibility for all campaigns triggered during a session.
View this data in:
Content > On-site Ads > Publisher Campaigns
Create and Use AT or UTM Parameters
Define your AT or UTM parameters in Piano Analytics. Reuse the parameter created in Section A.1. Associate this parameter with your campaign.
Link Your Batch Campaign
Push campaigns: The dispatcher extracts the AT or UTM parameter from:
The deeplink URL
The custom payload
If both are present, the dispatcher prioritizes the parameter in the custom payload.
In-App and Mobile Landing campaigns: The dispatcher extracts the AT or UTM parameter from:
The deeplink URL
The Tracking ID field in the campaign settings
After linking, Piano Analytics tracks all events related to your Batch push or In-App campaigns.
Here is where you will need to paste the payload:
Note that an extra step is needed on Android. You need to add the following code before calling the AppsFlyer AppsFlyerLib.getInstance().sendPushNotificationData method:



This guide explains how to enable tracking of AT Internet campaigns to monitor your Batch campaigns on web and mobile.
To track Batch web campaign opens in AT Internet:
xtor parameter in AT InternetOpen AT Internet.
Go to: Settings > Settings > Custom Marketing Campaign.
Create a Source (e.g., "Push Campaign").
Create a Campaign using that source.
xtor to your Batch deeplinkAppend the xtor parameter to your deeplink URL. For example:
Once configured, AT Internet will attribute visits to this campaign as a traffic source.
To track mobile push and In-App messaging campaigns in AT Internet, use Batch's built-in event dispatcher.
AT Internet dispatchers use the xtor parameter to send events to AT Internet.
Refer to the technical documentation for installation:
xtor parameterAs with web tracking, create a Custom Marketing Campaign in AT Internet. This will generate the xtor parameter you need for linking.
Push campaigns
The dispatcher reads the xtor from:
The deeplink URL
The custom payload
If both are present, the custom payload value takes priority.
In-App and Mobile Landing campaigns
The dispatcher reads the xtor from:
The deeplink URL
The Tracking ID field of the campaign
Once configured, AT Internet will track relevant events triggered by the campaign.
Indeed, Branch.io links can be used in Batch notifications for your referral and attribution needs.
Branch.io is a comprehensive mobile attribution & linking platform, that helps you acquire, engage, and measure across all devices, channels, and platforms by providing a holistic view of all user touchpoints.
The good news is that those links can be added to your Batch push notifications to ensure your users can open your notification deeplinks while you keep track of your push opens with Branch.io. โ
To add Branch deep links to your campaigns, you just have to add a 'Branch' key with your Branch deep link to your campaign custom payload to handle push notifications, very much like below:
Important note: Remember not to add any deeplink in the dedicated text field, it won't work this way. โ
For this integration to work on Android, you have to wire Batch SDK to Branch SDK in a . The Branch link has to be added to your result intent as shown in this code sample:
More information is in the .
No intervention whatsoever is necessary on iOS. More information is in .
FirebaseBatchIntegration.setup()$ adb shell setprop debug.firebase.analytics.app package_name$ adb shell setprop debug.firebase.analytics.app .none.-FIRDebugEnabled-FIRDebugDisabledhttps://mywebsite.com/item?at_medium=batchPush&at_campaign=new_offer{
"data":{
"af":{
"pid":"batch_int",
"is_retargeting":"true",
"c":"test_campaign"
}
}
}{
"af":{
"pid":"batch_int",
"is_retargeting":"true",
"c":"test_campaign"
}
}if (intent != null) { val batchPayload = intent.getBundleExtra(Batch.Push.PAYLOAD_KEY)
val af: String? = batchPayload?.getString("af")
if (batchPayload != null && af != null) {
intent = intent.putExtra("af", af)
}
}







Note the xtor parameter associated with your campaign.


https://mywebsite.com/item?xtor=CS1-123-label1-label2-label3


Learn how to track your Batch web and mobile campaigns in Google Analytics.
Batch allows you to track Google Analytics users who interact with your push notifications or In-App messages. This is helpful to understand what your users do in your app/website, tracking transactions and e-commerce conversions.
You can easily track your web push opens in Google Analytics by following these two steps:
The first thing you need to do is to add UTM tags to the deeplink of your push campaign. This can be done from the campaign editor or when calling the Campaigns / Transactional API:
Each UTM tag includes two main elements:
A parameter (e.g: utm_source)
A value (eg: newsletter)
There are several parameters you can use (more information ):
Campaign Name (utm_campaign): This can be the name (e.g. salejuly) or the category of your push campaign (e.g. onboarding).
Campaign Source (utm_source): This parameter allows you to define where your content comes from (e.g. Batch_Android, Batch_iOS)
Campaign Medium (utm_medium): This parameter allows you to identify the medium used by the user is coming from (e.g. push)
You can build easily add UTM tags to your deeplink by using Google's :
Note :
This section assumes you are already using the V3 of Google Analytics' SDK in your app. Also, you must have a deeplink architecture integrated into your application.
The since October 2019 for non-Google Analytics 360 customers, meaning if you still use it on a free Google Analytics account, no data will be available and you must migrate to Firebase.
The Google Analytics dispatcher uses the (like on lots of Google services) from your campaign to dispatch a new set of data on Google Analytics.
If you haven't already installed the Google Analytics event dispatcher, please read our technical documentation for and .
Once the dispatcher is installed, you will be able to track related to your push or In-App messaging campaigns on Google Analytics.
Once the steps described in either sections A or B are completed. You will be able to track users coming from specific sources, mediums or campaigns by going to Acquisition > Sources > all on Google Analytics.
Then you will be able to see your whole campaign from push notifications by clicking on the campaign tab.
In order to test whether your Batch campaign data is correctly being tracked, you can go to the "Real Time" tab in Google Analytics and check the event count for the event that you want to track.
You can then try to send yourself a test push ( / ) or . If integrated correctly, you should see the event count increase a few moments after the event is performed (Push open, Push notification dismiss, In-App dismiss, In-App display, etc).
Sync your Amplitude Cohorts to Batch and use them in your Email, SMS, Push or In-App messaging campaign targeting.
Amplitude is a product analytics platform designed to help businesses understand and optimize user engagement and product usage. It provides tools and insights that enable companies to make data-driven decisions to improve their digital products and user experiences.
This integration allows you to use Amplitude Cohorts as Custom Audiences in Push and In-App automations.
This integration is available for customers who have paid plans with Amplitude and have the Bacth destination enabled.
The user IDs that compose your Amplitude Cohorts need to be of the same type of identifier as the Custom User ID used in your Batch Profile base (tracked from your mobile apps, website or Batch APIs) OR Batch's Installation IDs if tracked in Amplitude.
This guide explains how to integrate Piano Composer with Batch to enhance your engagement strategy by retargeting users after a Piano experience is displayed on your website.
Piano Composer is a customer journey orchestration tool that allows you to display experiences on your website based on user behavior, triggers, and conditions. You can use it to drive conversion actions such as account creation, premium content access, or adblocker circumvention.
By connecting Piano Composer to Batch, you can trigger campaigns (e.g., Web Push or Email) after a user has seen a Piano Experience but hasn't completed the expected conversion.
Use Piano's callbacks to forward user interaction data to Batch via Web Tagging.
Open your Piano dashboard and access the Experience you want to track.
In the "Embed Code" section, insert Batch Web Tagging methods into the existing script.
Piano's callbacks will then send the relevant event data to Batch automatically.
You can find a sample integration script .
Once events are forwarded to Batch, you can use them to trigger automations directly in the Batch dashboard.
For example, target users who saw an account creation prompt but did not convert.
In addition to callbacks, Piano Composer lets you execute JavaScript when an experience is shown.
Use the Run JS action to call Batch methods manually, making it possible to:
Send custom events
Set user attributes
Trigger advanced scenarios for all users targeted by the Experience
Yes, you can use Adjust attribution data to improve your segmentation within Batch. The connection only requires a quick code addition.
As you may know, is a Mobile Attribution and Analytics service. Their service provides app marketers with a smart business platform, combining measurement for advertising sources on mobile with advanced analytics.
The good news is that you can use Adjust attribution data to improve your segmentation within Batch. โ
Callbacks provided by Adjust SDK allow you to sync Adjust data with Batch SDK. When you have implemented the Adjust attribution callback inside your application, you can use Batch segmentation engine to target users based on install source attribution data. โ
Send custom data from Zeotap to Batch, and get reports from Batch
is a leading brand that offers an easy, secure, and impactful Customer Data Platform (CDP) to deliver personalized customer experiences. With the Zeotap CDP, businesses can gain a 360-degree view of their customers and unlock valuable insights.
Integrating Batch with Zeotap provides a range of features and capabilities that enable marketers to create personalized and relevant experiences for their users and drive engagement, retention, and revenue. The integration allows sharing audiences built in Zeotap, triggering automations, and exchanging data in real-time.
Here is the data that can be exchanged via our connection:
Zeotap โ Batch: Send custom events and custom audiences to be used in Batch campaigns and automations
The dispatcher gathers the values of utm_campaign, utm_source and utm_medium from the deeplink URL and from the custom payload of your campaign.
The tags utm_source and utm_medium are optional because they have a default value of batch and push accordingly.
You can add utm_content only in the deeplink URL in case your push notification has several different buttons.
The dispatcher gathers the value of utm_campaign from the field Tracking ID of your campaign.
You can't customize the utm_source and utm_medium tags, they have a default value of batch and in-app accordingly.
You can add utm_content only in the deeplink URL in case your in-app message has two different buttons.





You can check all synced audiences in the dedicated "Audiences" tab by navigating into "Profiles > Audiences".
Once you made sure your Cohort has been synched, you can proceed to use it in the targeting section of your Push, In-App, Email, or SMS orchestration to either include or exclude users in that audience in the campaign's target.
After having set up the Adjust attribution callback (iOS instructions on callbacks), you simply have to send Batch the appropriate data via the SDK's method.
Here's an example on how you can set the callback in your app code:
You can find here the official GitHub repository. โ
Similarly, you have to set up the Adjust attribution callback (Android instructions) and sent Batch the attribution data via the SDK's method.
Here's an example of how you can set that callback in your app code:
You can find here the official GitHub repository. โ
Now, you can test your integration using our debug tool and find if your attribution data work properly on the Batch dashboard. โ Once the data is well collected, you will be able to specify an installation source and more from the campaign editor:
That's all, you have no excuse not to properly target your users based on attribution now ๐.
Here is how to set up and use the connection:
Pre-requisite: Your user IDs in Zeotap must be the same type as the Custom User ID you use for your Batch apps/websites.
The connection allows you to ingest data from Batch into Zeotap.
Here is an example of a use case leveraging the Batch Source feature.
โ Follow Zeotap's documentation to create a Batch Source in Zeotap.
The Batch feature allows you to upload static segments exported from third-party tools. You can target these audiences with a campaign or automation from the Batch dashboard:
You may also want to use this audience in combination with other segmentation features or exclude this audience from your targeting.
โ Follow Zeotap's documentation to send Audiences from Zeotap to Batch.
Zeotap can send events in real-time to Batch. These events can be used, for example, as Trigger and Exit events of Trigger Automations.
โ Follow Zeotap's documentation to send Custom Events from Zeotap to Batch.



Here's a step-by-step guide on how leverage Hightouch to manage profiles, set attributes and track events in Batch.
Modern data architectures demand seamless integration between storage, processing, and actionable platforms. Connecting Batch to your Data Warehouse enables a unified, efficient, and scalable approach to leveraging customer data for engagement.
Hightouch is an excellent tool to send your data to Batch and works great with Snowflake, BigQuery, Redshift, Databricks, ClickHouse, and many more.
By doing so, you ensure keeping your Data Warehouse as the Single Source of Truth, you have complete control over your data update frequency and you can leverage huge data volumes.
In this tutorial, we will send user data to Batchโs Profile API.
We will be sending attributes and events to each of your users profiles using the native Batch destination.
The first step is to organize your data in order to have a table storing your user data, transformed and ready to be sent to Batch. NB : Views will work as well.
We recommend you use a dedicated database and schema to store the data destined to be sent via Reverse ETL.
This guide explains how to connect Batch with Poool to track paywall interactions โ such as page views, logins, and subscription clicks โ directly in Batch.
This integration lets you combine monetization data and engagement insights to build more personalized and effective messaging strategies.
By connecting both platforms, youโll bridge monetization and engagement data:
Poool provides valuable insights about reader conversion and access behaviour (free vs. premium vs. subscriber).
Batch lets you turn those insights into personalized automation triggers โ for example, re-engaging readers who saw the paywall but didnโt subscribe by sending them an email, a push notification or a SMS.
In short, this integration helps you:
Retarget users based on their paywall interactions,
Boost conversion through contextual messaging and automation.
Youโll need:
An existing Batch Web SDK v4 setup on your website
A Poool Access integration with your App ID
Access to both dashboards: and
If you havenโt integrated either SDK yet, follow each platformโs installation guide first.
Once both SDKs are loaded on your site, the idea is simple: Poool triggers events when users interact with your paywall โ for example, when the paywall loads, when a reader clicks โSubscribeโ, or when they log in. Each of these events can be listened and then sent to Batch as a Custom Event.
This allows you to record every key paywall interaction directly inside Batch and reuse it for audience segmentation or campaign targeting.
Load both SDKs on your page:
Poool scripts (access.min.js and audit.min.js) handle the paywall display and analytics.
Batchโs script manages event collection and webpush messaging.
Once the integration is live, these new events will appear in Batch โ Settings โ Custom Data โ Events. You can then:
Build segments (e.g. users who clicked โSubscribeโ but didnโt convert):
Trigger personalized email, SMS, push and web notifications:
โ Youโre all set! Your Poool paywall is now connected to Batch. Each paywall interaction โ view, login, subscription, or custom action โ can be tracked in Batch to help you better understand your readers and personalize their experience.
Include voucher codes from Voucherify in Batch communications
Voucherify is an API-first Promotion and Loyalty Engine that helps enterprise brands build and manage personalized promo codes, gift cards, auto-applied promotions, loyalty programs, and referral campaigns.
A connection has been developed to allow our customers to add voucher codes generated by Voucherify to their Batch messages.
Here is how to set up and use the connection:
Pre-requisite: The user IDs selected in Voucherify need to be of the same type as the Custom User ID you have for your Batch apps/website.
Follow the to activate the connection and create a voucher code distribution.
Once the distribution is activated in Voucherify, the corresponding custom attributes will be visible on the Batch dashboard, under Profiles > Custom Data:
You need to activate the necessary attributes by clicking the toggle on the left of each attribute, and then clicking "Save" on the right.
You can use the attributes coming from Voucherify to personalize your messages in Batch just like any other custom attribute.
Here is an example of a one-shot push campaign:
In this example, we assume that the voucher codes in Voucherify have been assigned to a pre-defined list of users.
In this case, you need to:
Import this list into Batch as an Audience (see how to do this in our )
Select this audience as the target of your campaign:
Then, include the voucher code in your message:
If you are targeting a mobile application, you might also want to to allow your customers to copy the voucher code to their clipboard:
Send attributes, events, custom audiences and more from Segment to Batch.





Make sure Hightouch has access to your Data Warehouse, see this Hightouch basics tutorial.
Creating a model is basically telling Hightouch where to go fetch the data in your Warehouse.
We will call it batch_profile_base in this example.
A model could be made with a more complex query but we recommend you keep your complex logic in your Data Warehouse, with your usual transformations methods.
This is where you will configure the access to your Batch Project.
You will need API Keys available in your Batch Dashboard > Settings.
In Hightouch, create a Batch Destination and enter the required information, which you can find in your Batch dashboard under Settings โ General.
Once this is done, deal with your internal permissions and your Batch Destination is ready!
Syncs declare how you want your data to appear in Batch and on what frequency you want updates. This is the section where you will have to make choices.
Add Sync > Select your model > Select your destination
Here comes the mapping configuration:
You can send various types of data from Hightouch to Batch:
Attributes:
You can include multiple attributesโboth native and customโin a single sync to Batch.
Important: Destination field names must be in lowercase. Using uppercase letters will cause errors and prevent the data from being processed correctly.
Events:
A single sync allows you to send one event along with multiple associated event attributes.
Important: Destination field names must be in lowercase. Using uppercase letters will cause errors and prevent the data from being processed correctly.
Custom Audience (currently supported only for MEP):
Each sync allows you to create or update one audience, including associated attributes.
Important: Destination field names must be in lowercase. Using uppercase letters will cause errors and prevent the data from being processed correctly.
We recommend you test your sync with Hightouch testing module. Remember to test both added rows and changed rows. The API Response should guide you through debugging if needed.
Once your test is successful, schedule your sync, deploy it and enjoy having your profile base completely up to date on Batch.
You can use Batchโs Profile View to verify that the customer data has reached its destination, on the basis of a customer ID:
Youโre now ready to use your data to send personalised and engaging messages to your audience ๐
Initialize Poool with your App ID and configure your paywall as usual.
Listen to Poool events such as:
page-viewโ when the paywall is displayed
loginClick โ when a user clicks โLog inโ
subscribeClick โ when a user clicks โSubscribeโ
...
Youโll find the full list of Poool events and their payloads in Pooolโs developer documentation: ๐ ๐
Send these events to Batch as Custom Events using Batchโs Web SDK.
For example, when Poool emits a loginClick, you send a Poool_click_log event to Batch:


You can create a custom Destination Function to send attributes and events to Batch.
Destination functions allow you to handle your Segment events and send them to any external tool or API, through JavaScript functions, without having to set up an infrastructure.
To create a Destination Function in Segment, navigate through Connections > Catalog > Functions > Destination Functions.
Then, we suggest you use our pre-built script to create your function and adapt it to your use cases.
Segment has a built-in testing module that will help you understand if your Function calls Batch APIs as expected. Try it using your events payloads.
Once your script is ready, you can Save & Deploy your function to a destination.
Pick one source. It could be any of your sources: iOS, Android, Web, or other.
Declare settings. They are a good option to store your API Keys. To ensure that the script recognizes the API keys, please name them as follows: batchRestApiKey, batchLiveApiKey or batchProjectApiKey. The REST API Key is sensitive; you must declare it as such.
Activate the Destination so that data starts flowing between Segment and Batch.
You should note that a Destination is an instance of a Destination Function.
If you have several sources plugged into Segment, you must create one Destination per source. However, you can use the same Function for all Destinations, as long as your events are handled correctly within the Function.
Here is how you can create a custom Destination Function to send custom audiences to Batch.
You must follow the following steps in that order :
Create your Destination Function
Create your Destination
Create a filter in your Destination. Filter out all events that are not of event type โTrackโ. You can use โOnly Send Eventโ > โEvent Type is trackโ
Create your Segment Audience and send its events to the Batch Destination
Destination functions allow you to handle your Segment events and send them to any external tool or API, through JavaScript functions and without having to set up an infrastructure.
To create a Destination Function in Segment, navigate through Connections > Catalog > Functions > Destination Functions.
Then we suggest you use our pre-built script to create your function and adapt it to your use cases.
Segment has a built-in testing module that will help you understand if your Function calls Batch APIs as expected. Try it using your audience events payloads (Track and Identify).
Once your script is ready, you can Save & Deploy your function to a destination.
Pick one source. It could be any of your sources: iOS, Android, Web, or other.
Declare settings. They are a good option to store your API Keys. To ensure that the script recognizes the API keys, please name them as follows: batchRestApiKey, batchLiveApiKey or batchProjectApiKey. The REST API Key is sensitive, you must declare it as such.
Activate the Destination so that data starts flowing between Segment and Batch.
You need to deploy one destination for each Batch app (e.g., one destination for the iOS app and one destination for the Android app).
Pre-requisite: To create Audiences, you need to have created a Unify / Personas space and declared data sources.
In Engage > Audiences, create an audience with the audience builder. You can target events from your data sources and create your audiences accordingly. There are several computing methods available. Please refer to Segmentโs Audience Documentation to understand it better.
Once your audience is designed, choose to send events to one or multiple Batch Destinations created beforehand.
In the menu that opens, select "Send Track". โNote: The values of the "Enter Event" and "Exit Event" fields don't matter.
Give your audience a name, and the audience creation will be complete:
๐ Your audience will be initialized in Segment and created in Batch immediately. The audience will be updated in Batch each time a user enters or leaves it.








With our brand new connector, you can run complex push automation scenarios from the famous Salesforce Journey Builder.
Salesforce Marketing Cloud is an extensive marketing suite that allows marketers to create complex omnichannel journeys that are more tailor-made and more interesting for the end user.
๐ก In case you missed it, we just released a connector with them.
Get in touch with us to set up this integration.
Once the integration has been set up on your account, you should see a new Batch Custom Activity in your Journey Builder, start by adding it to your Journey and click on it!
We let you either use Batch's interface or Salesforce's to create your campaign content. If you feel comfortable with Batch dashboard and feature, you can create a campaign there with Mobile Landings, personalization and previsualization, and save it as a draft.
Otherwise, you can choose "New campaign" to create new campaign content from scratch.
Create a new Decision Split, and use the campaign ID below the Batch tile, and use it as a group-id to refer to a specific notification in your request.
If you want to target users that received the push notification, add a event: sent request. If you want to target users that opened the push notification, add a event: open request as shown below :
Every day, Batch will fill a Data Extension called BATCH_PUSH with reaction events, so the day following the sending of the push notification, we will provide you with data concerning each push that has been sent.
In this database, the push is referred to by their group-id, which is a slug of the campaign name you've chosen (= a campaign ID). Note that this slug is available as the push tile name:
In the BATCH_PUSH data extension, this data is available as the group-id. Use it to retrieve information on the state of a push of a certain user such as demonstrated below:
There are four states in which a push can be, those states are represented by the event attribute :
accepted: the push request has been accepted by Batch and will be processed asap.
sent: the push notification has been sent to the user.
open: the push notification has been opened by the user
error: the push notification encountered an error (device unreachable in most cases).
Connect Batch with Unbounce to sync form data and trigger personalized push, email, or SMS campaigns automatically.
Modern marketing architectures rely on smooth data flows between acquisition and engagement platforms. Integrating Batch with Unbounce lets you seamlessly bring interaction and conversion data from your landing pages into your customer engagement ecosystem.
By connecting the two platforms, you can leverage events from Unbounce โ such as form submissions, page visits, or campaign interactions โ to fuel your marketing automation within Batch. These events can be used to trigger personalized push notifications, SMS, email, or in-app messages, ensuring timely and relevant communication with your audiences.
This connection ensures that your marketing ecosystem remains consistent and data-driven. Unbounce continues to optimize your acquisition efforts, while Batch helps you transform those insights into meaningful, timely communications that strengthen your customer relationships.
Create your form in Unbounce
Start by creating a new form in Unbounce, or use an existing one, that youโll be able to reference later in your Batch campaigns โ for example, within the emails or push notifications you send.
To retrieve data from this form, youโll need to add a JavaScript snippet that captures the value of the โCUIDโ parameter, which must be passed as part of the pageโs URL (see step 2 below).
To do this:
Click on the โJavaScriptโ tab at the bottom of your Unbounce editor.
Your integration is now complete! You can start using your Unbounce forms to power personalized and engaging messages across your Batch campaigns โ including push notifications, emails, SMS, and more โ all enriched by the data youโve just connected.
access.on("loginClick", (e) => {
console.log("[Poool] loginClick", e);
batchSDK((api) => {
api.trackEvent("Poool_click_log", {
attributes: {
urlType: "Login",
category: "Paywall Abonnรฉ",
user_type: "Abonnรฉ",
},
});
});
});






If you've chosen the Template option on the second step, you will be asked now to choose for each app which draft campaign you wanna use for your push notification on Salesforce.
Note that it is also possible to override the draft content with new values if you choose the option in the bottom bar. Switching it on will bring you to the fourth step. Otherwise, you are done!
Capping
Payload
You are now prompted to write campaign content for your push notification. If a template was chosen in Step 3, these new values will override the template values.
Note that the image URL should be secured.
You can easily add other languages to your message using the "Add language..." module :
Mobile landing :
Mobile Landings allow you to easily introduce continuity between your app, and your pushes: A user opening a push will be greeted by a rich message related to what they opened, rather than just ending up on your app's main menu.
You can now manage them in the data activity:
Capping :
Use the "Labels" field to implement capping define in your Batch dashboard and regulate your marketing pressure, ensuring your audience isn't overwhelmed with messages.
Payload :
It's an optional JSON string that can contain additional parameters that your application can handle when receiving push notifications if configured to do so.







In the โManage Scriptsโ section, add a new script name and set the Placement option to โAfter Body Tag.โ
Then, insert the following script to capture the CUID value:
Use your form in Batch
In Batch, simply use the URL of your Unbounce form wherever you need it โ for example, in an email, push notification, or in-app message.
At the end of your formโs link, add the following parameter:
This dynamic parameter ensures that each userโs unique identifier is passed through the URL when they open the form. It allows Batch to retrieve the information submitted through the form and associate it with the corresponding user profile.
Use the Native Zapier Trigger to Retrieve Data from Your Form
Step 1 โ Set up the Unbounce Trigger
In Zapier, start by adding the native Unbounce trigger to capture form submissions.
Then, configure it as follows:
In the Setup tab: select โNew Form Submissionโ as the trigger event.
In the Configure tab: choose the client name and landing page from which you want to retrieve data.
In the Test tab: test your setup to ensure the connection works properly.
Step 2 โ Send Data to Batch via Webhooks
Next, add an action step using โWebhooks by Zapierโ to send the retrieved data to Batch via the .
In the Setup section:
Choose โCustom Requestโ as the action event.
In the Configure section, use the following parameters:
Method: POST
URL: https://api.batch.com/2.7/profiles/update
Data: use a JSON body to map your Unbounce fields to Batch attributes. Hereโs an example:
Headers:
Add the follwing headers:
Content-Type: application/json
Authorization: Bearer YOUR_REST_API_KEY
X-Batch-Project: YOUR_BATCH_PROJECT_ID
Donโt forget to test! The API Response should guide you through debugging if needed.
This setup ensures that data collected from your Unbounce form is automatically transmitted to Batch, enriching your existing profiles with fresh, actionable information.
Deploy & use your form in Batch
Once your test has run successfully, simply turn your Zap on โ and enjoy seeing your Unbounce form data automatically reflected in your Batch profiles.
You can confirm that the information is correctly synchronized by checking Batchโs Profile View. Search for a user using their Customer ID or email address to verify that the latest data has been properly received. (See: How to find a user's profile on the dashboard?)








?CUID={{ b.custom_id }}<script>
document.addEventListener("DOMContentLoaded", function() {
// Get the CUID parameter from the URL
const params = new URLSearchParams(window.location.search);
const cuid = params.get("CUID");
// If CUID exists, create a hidden field and add it to the form
if (cuid) {
// Find the first form on the page
const form = document.querySelector("form");
if (form) {
// Create the hidden input field
const hiddenInput = document.createElement("input");
hiddenInput.type = "hidden";
hiddenInput.name = "CUID";
hiddenInput.id = "CUID";
hiddenInput.value = cuid;
// Append the hidden field to the form
form.appendChild(hiddenInput);
console.log("CUID field added to the form:", cuid);
} else {
console.warn("No form found on the page.");
}
} else {
console.warn("No CUID parameter found in the URL.");
}
});
</script>
[
{
"identifiers": {
"custom_id": "Map_Your_Field"
},
"attributes": {
"$email_address": "Map_Your_Field",
"firstname": "Map_Your_Field",
"lastname": "Map_Your_Field",
"industry": "Map_Your_Field"
}
}
]







Here's a user guide on how to install and use Batch's Snowflake Native app to synchronize your Snowflake data with Batch, for segmentation, personalization, and orchestration purposes.
Batch leverages Snowflake's Native app framework to provide a ready-to-install Snowflake app that
allows you to sync your customer data from Snowflake into Batch in no time:
Securely manage connections to your Batch projects using Project Keys and REST API Keys.
Create and configure synchronization tasks to send data from your Snowflake dynamic tables to Batch.
Monitor and manage the status of your active data syncs, with options to suspend and resume them as needed.
This guide will walk you through each feature of the application.
Important requirement need to be available on your Snowflake account for you to be able to use this app.
๐ To have access to Batch's Native app on your Snowflake account, you can install it from the .
These steps need to be performed by a Snowflake Administrator (ACCOUNTADMIN role).
Once the app has been shared with your Snowflake account, you'll be able to find it in your installed apps by navigating to Data products > Apps from your Snowsight console.
When the app is launched for the first time, you'll need to authorize the following privileges needed for the app to work properly:
1 โ CREATE COMPUTE POOL : This is required by the native app to run Job services triggered by scheduled tasks. These jobs transform your Snowflake data and send it to Batch using Batch APIs.
2 โ EXECUTE TASK : This is required for the native app to synchronize updates to your Snowflake data in a scheduled, recurring manner with Batch.
3 โ CREATE WAREHOUSE : This is required for the native app to execute recurring synchronization tasks.
4 โ Click on the "Grant" button to grant both these privileges.
To synchronize data with Batch, the Native app needs to be able to make external calls to Batch's APIs (api.batch.com:443). This is done through an .
You can first click on the "Review" button to display additional information on the required external access:
Once that is done, simply click on the "Connect" button.
Now, all that is left to do is clicking on the "Activate" button that appears on the top right corner of the screen. You should then be redirected to an information page through which you can launch the app.
The first step is to register your Batch projects with the application. This securely stores your credentials, allowing the app to send data to the correct Batch project.
1 โ Go to the "Manage Batch Projects" tab and then the "Add a New Batch Project" section
2 โ Enter a display name for your project.
3 โ Enter your
4 โ Enter your
5 โ Click the "Add Project" button.
Once projects are added, they are listed at the top of the tab and can be deleted via the "Delete project" button.
This section allows you to create a task that automatically synchronizes data from a Snowflake dynamic table to one of your registered Batch projects.
Prior to creating a synchronization task, you'll need to make sure the following requirements are met:
This allows you to create a background task that is scheduled to run periodically (every 24 hours by default), which will make sure all updates (inserts/deletes/edits) on your source Dynamic table are sent to Batch.
1 โ Go to the "Create a Sync task" tab.
2 โ Fill in the Project Key: The Batch Project Key for the project you want to send data to. This must match one of the projects you added in the "Manage Batch Projects" tab.
3 โ Fill in the Dynamic Table Name: The fully qualified name of the source dynamic table in Snowflake (e.g., MY_DATABASE.MY_SCHEMA.BATCH_PROFILE_DATA). The application will create a stream on this table to capture new and updated rows.
4 โ Fill in the Identifier Column name: The name of the column in your dynamic table that contains the user identifier (e.g., CUSTOM_ID). This is used to match users in Batch, so it must be the same identifier used in your Batch Profile base.
5 โ After filling in all the fields, click the "Activate data synchronization" button.
This tab provides a view to monitor and control all your active and paused synchronization tasks.
1 โ Go to the "Manage Sync Tasks" tab.
For each task, the following information is displayed:
Task Name: The unique name of the task in Snowflake.
Project Name and Key: The associated Batch project Name (display name selected during project registration) and Project Key.
Table: The source dynamic table used by the task.
2 โ Click the "Resume" button to resume a paused task: The task's status will change to STARTED
3 โ Click the "Suspend" button to pause a running task: The task's status will change to SUSPENDED.
4 โ Click the "๐๏ธ" button to delete a task.
5 โ A status message below the task displays information on the last task run.
6 โ Click the "Refresh Tasks" button to see the most up-to-date view of existing tasks.
You can use Batchโs Profile View to verify that the customer data has reached its destination, on the basis of a customer ID (the same one contained in your User ID column): .
To monitor task execution activity, you can check the information displayed in the . This will let you know what tasks are running/suspended, as well as additional information on the last executions.
If any issues occur during task execution, a red status message will be displayed below the task with additional information on the encountered error.
All logs generated by the sync task containers are automatically captured and stored in your account's central snowflake.telemetry.events table. This provides a persistent, queryable record of all activity.
To find logs relevant to this application, you can run a query that filters these events based on the application's unique compute pool name. This is the most effective way to see a complete history of all your sync tasks.
Run the following command in a Snowflake worksheet to retrieve the latest logs:
This query will show you the log messages and all their associated metadata, giving you a comprehensive view for debugging.
For more detailed troubleshooting, you can enable a global Debug Mode. When active, the data sync container generates more verbose logs, which can help diagnose complex issues with data processing or API communication.
When to Use It: Enable this mode only when you are actively troubleshooting a failing sync task and the standard execution logs do not provide enough detail. Remember to disable it once the troubleshooting is done to avoid unnecessary storage of a high volume of detailed logs.
How to Enable/Disable It: Debug Mode is an application-level setting that must be changed. To enable it, run the following SQL command in a Snowflake worksheet:
To disable it, simply set it back to 'FALSE'.
Your table must contain a User ID column to be used as a mapping key with Batchโs Profile base. This must be the same identifier you use as Batchโs Custom User ID.
Batchโs Native app uses Batchโs Profile API to send profile data. Thus, your table data must comply with the APIs requirements (e.g. attribute max length, etc). Non-compliant data will be ignored during synchronization.
Columns that should be mapped with Batch native attributes should be named according to Batch's native attribute documentation. e.g. to map email addresses, name the column "$email_address".
Columns containing DATES or URLS must be prefixed by date_ or url_ respectively. If not, these fields will be synchronized as String attributes.
The app uses Snowflake Streams to capture changes on your Dynamic Table. Therefore, ensure that your underlying query supports incremental refresh.
Here is how you can grant these rights:
Created: The timestamp when the task was created.
Status: The current state of the task (STARTED or SUSPENDED)
Suspended Date: If the task is suspended, this shows when it was paused.








CREATE OR REPLACE DYNAMIC TABLE batch_sync_table
TARGET_LAG = '60 minutes'
WAREHOUSE = MY_WAREHOUSE
AS
-- Your SQL query hereSELECT *
FROM
snowflake.telemetry.events
WHERE
-- Filter to logs specifically from this application's compute pool
RESOURCE_ATTRIBUTES['snow.compute_pool.name']::string = 'BATCH_DATA_SYNC_COMPUTE_POOL'
ORDER BY
timestamp DESC;
CALL BATCH_DATA_SYNC.batch_app.update_config('DEBUG_MODE','TRUE');GRANT USAGE ON database [YOUR DATABASE] TO APPLICATION BATCH_DATA_SYNC;
GRANT USAGE ON schema [YOUR SCHEMA] TO APPLICATION BATCH_DATA_SYNC;
GRANT SELECT ON dynamic table [YOUR DYNAMIC TABLE] to APPLICATION BATCH_DATA_SYNC;You can use AppsFlyer attribution data to improve your segmentation within Batch. The connection only requires a quick code addition.
is a mobile advertising attribution and analytics company. AppsFlyer helps marketers to pinpoint their targeting, optimize their ad spend and boost their ROI.
On the other hand, Batch can receive information from AppsFlyer using their callbacks attribution. This will allow you to re-target your users with notifications based on the installation source.
โ
Callbacks provided by AppsFlyer SDK allow you to sync AppsFlyer data with Batch SDK. You will be able to use Batch segmentation to target users based on install source attribution data.
After setting up the AppsFlyer attribution callback (iOS instructions on callbacks), you need to send Batch the appropriate data via the SDK's method.
Here is an example of how you can set the callback in your app code (using Batch V2 SDK): โ
Similarly, you need to set up the AppsFlyer attribution callback (Android instructions) and send Batch the attribution data via the SDK's method.
Here is an example of how you can set the callback in your app code (using Batch V2 SDK):
Now, you can test your integration using our and find out if your data work properly on the Batch dashboard.
Once your tests are finished, you will be able to specify an installation source and more from the campaign editor:
It's now super easy to target users based on attribution ๐.
import AppsFlyerLib
import Batch
extension AppDelegate: AppsFlyerLibDelegate {
func onConversionDataSuccess(_ conversionData: [AnyHashable : Any]) {
BatchProfile.editor { editor in
if let mediaSource = conversionData["media_source"] as? String {
try? editor.set(attribute: mediaSource, forKey: "appsflyer_source")
}
if let campaignId = conversionData["campaign"] as? String {
try? editor.set(attribute: campaignId, forKey: "appsflyer_campaign")
}
if let adSet = conversionData["af_adset"] as? String {
try? editor.set(attribute: adSet, forKey: "appsflyer_adset")
}
}
}
func onConversionDataFail(_ error: any Error) {
}
}AppsFlyerLib.getInstance().registerConversionListener(this, object:
AppsFlyerConversionListener {
override fun onConversionDataSuccess(conversionData: MutableMap<String, Any>?) {
if (conversionData == null) {
return
}
Batch.Profile.editor().apply {
(conversionData["campaign"] as? String)?.let {
setAttribute("appsflyer_campaign", it)
}
(conversionData["media_source"] as? String)?.let {
setAttribute("appsflyer_source", it)
}
(conversionData["af_adset"] as? String)?.let {
setAttribute("appsflyer_adset", it)
}
save()
}
}
override fun onConversionDataFail(error: String?) {
}
override fun onAppOpenAttribution(data: MutableMap<String, String>?) {
}
override fun onAttributionFailure(error: String?) {
}
})