Ensure consistency, accuracy and transparency of your data across multiple systems. Learn about opportunities for data warehousing, analysis and reporting with integrations between Pushwoosh and CRM software solutions.

If you're using a Customer Relationship Management (CRM) solution, it's highly likely that you feel the need in synchronizing data that comes from multiple sources. In order to conduct analysis and get accurate reports, it's vital to keep your customer data consistent and transparent.

Data Is King

Analytics play a crucial role in shaping a marketing strategy. No matter what industry you operate in or what size your business is, data should be telling you what strategy to stick to.

This includes fine-tuning your campaigns based on specific metrics, such as click-through and engagement rates, analysing your customers buying cycle and general behavior in order to improve your product and service. Data and analytics also help determine the channels that are most effective in generating ROI. According to Hubspot, 39% of marketers consider proving the ROI of their marketing activities their top challenge, so understanding data is their priority.

It can be challenging for companies with large userbases to manage and analyse data across multiple platforms, so Pushwoosh creates opportunities to make the process easier.

Data Migration: Pushwoosh ↔ CRMs

There are several ways you can synchronize, export and import customer data from Pushwoosh to your analytical CRMs and vice-versa.  Here are some of the best practices that will allow you to synchronize and migrate data between Pushwoosh and CRMs, while keeping it consistent and transparent:

1. Stick to User-Centric approach: use existing user IDs from your CRM / analytical system to create a compatible database.

The benefits of User-Centric approach:

  • Transparent integration across all systems (CRM, Acquisition, Backend, etc.);
  • Transparent statistics binding and data flow
  • Robust and straightforward procedure for segmentation
  • Easy troubleshooting
  • Ability to use Customer Journey and integrate with other systems (Like Adjust, Solitics, etc.)

2. Push tags in a bulk from your back-end to Pushwoosh to allow more segmentation options.

It allows building new segments and sending tailored campaigns using fresh data from your CRM / billing / AI without needing users to update your app.

The API call /bulkSetTags allows setting tag values for 1000 at once for mass update operations, and unlike regular /setTags call, it speeds up the process significantly. Read more the bulk tag API call here.

Besides, you can use the following Python script for performing similar mass update operations:

Unfold Script #!/usr/bin/env python3 # -*- coding: utf-8 -*- ​ import argparse import requests import json import csv ​ ​ ENDPOINT = "https://cp.pushwoosh.com/json/1.3" API_KEY = "" # Put your API Key here APP_CODE= "" # Put the application code here ​ def bulkSetTags(hwids=None, name=None, value=None): """ Function to set tags in bulk via polling /bulkSetTags API: https://docs.pushwoosh.com/platform-docs/api-reference/tags#bulksettags ​ :param hwids – array of hardware IDs :param name – name of the tag :param value - value of the tag ​ returns JSON with the response """ if hwids is not None and name is not None and value is not None: request = { "request": { "auth": API_KEY, "application": APP_CODE, "devices": [] } } for hwid in hwids: request["request"]["devices"].append({ "hwid": hwid, "tags": { name: value } }) url = "{}/bulkSetTags".format(ENDPOINT) print("Url: {}\nDATA:{}".format(url, json.dumps(request))) response = requests.post(url, data=json.dumps(request)) if response.status_code == 200: return response.json() else: return response ​ ​ parser = argparse.ArgumentParser(description='Bulk set tags via CSV. Usage: bulksettags.py file.csv tag_name tag_value') parser.add_argument('csv_location', help='CSV file name in current directory with the list of HWIDs, assuming hwid in first column') parser.add_argument('tag_name', help='name of the tag to update') parser.add_argument('tag_value', help='value of the tag to set') ​ args = parser.parse_args() ​ if args.csv_location is not None and args.tag_name is not None and args.tag_value is not None: with open(args.csv_location) as f: # read list of HWIDs from input CSV and split it into batches of 1000 devices rows = csv.reader(f, delimiter=',', quotechar='"') counter = 0 hwids = [] n = 1 for row in rows: hwids.append(row[0]) counter += 1 # if we have already 1000 hwids, let's send the request if counter == 100: r = bulkSetTags(hwids=hwids, name=args.tag_name, value=args.tag_value) print(r) counter = 0 n += 1 hwids = []

3. Sync data back to your Data Warehouse
HINT: Use "User ID" to tie the data together.

The benefits of synchronization based on user ID:

  • Improved reporting and the ability to cross-reference data with business-facing systems
  • Ability to store the data the way you need and for as long as you need it

Both Control Panel and /exportSegment API call exports include User ID column, that you can use in several ways:
• Use User-Specific tags to map user attributes across multiple devices
• Use User-Centric APIs to operate user IDs instead of device IDs
• Map per-device statistics from Pushwoosh onto user-centric data from your data warehouse, CRM, or any other system.

Read more about the Export Segment feature here.

The overall benefits of data migration:

  • Accurate reports (consistency of all data, no losses);
  • Running experiments and testing marketing hypotheses is simplified;
  • Easier debugging & troubleshooting: you can check info using such IDs as message ID, user ID, HWID, etc.

Request a free demo to learn how you can migrate data from your CRM solution to Pushwoosh and back and get accurate reports: