Introduction
MoEngage lets you import users, events, and auxiliary data into your workspace from files (Amazon S3, SFTP, or a manual CSV upload) and directly from your data warehouse (Snowflake, BigQuery, or Databricks). This page helps you choose the right source for your use case. Once you pick a path, its dedicated setup page walks you through the entire process.If your system requires IP whitelisting, refer to IP Whitelisting in MoEngage before setting up a data import.
Sources and Supported Entities
Each source supports a different set of entity types. Use this matrix to confirm your source can import the data you need. File Sources
Data Warehouses
Entity types:
- Registered Users: Users already registered on MoEngage. Also used to update existing users in bulk.
- Anonymous Users: Users who have not yet registered on MoEngage.
- Events (Standard and User-Defined): Standard events such as Campaign Interaction Events, as well as your own user-defined events.
- Auxiliary Data: User data ingested into MoEngage temporarily for specific business purposes. Available for file-based sources only (S3, SFTP, and Manual Upload), not for data warehouses.
Choose Your Import Path
Select the import method that matches where your data lives:Set Up a File Import
Automate imports from files dropped in Amazon S3 or an SFTP server, on a one-time or periodic schedule.
Set Up a Data Warehouse Import
Import directly from Snowflake, BigQuery, or Databricks tables and views. Connection-driven, with one-time or periodic syncs.
Manual Uploads
Upload a CSV directly in the dashboard for users or events. One-time only, no periodic scheduling.
Auxiliary Data
Import supplementary data via S3, SFTP, or CSV, using a simple primary-key mapping model.
How Imports Work
The following mechanics are common to every import source. Source-specific setup steps, limits, and failure behavior live on each source’s setup page.Imports Dashboard
The Data Imports dashboard lists all your imports and their key details:Import schedule and detail times shown on the Data Imports dashboard use your app’s configured timezone. If no app timezone is set, they display in UTC by default. Set the app timezone from Settings to see these times in your preferred timezone. This display timezone is separate from the requirement that mapped timestamp columns (such as Event time or Updated at) always be in UTC.
Import Statuses
Every import on the dashboard carries one of the following statuses:- Scheduled: The import is scheduled to run in the future.
- Processing: The import is currently running.
- Successful: The import completed successfully.
- Partial Success: At least one file (or row) was imported with partial success.
- Failed: The import failed. Hover over the status to see the reason.
Trigger Imports
You can trigger imports in the following ways:- Manually: Trigger a periodic import from the imports page by clicking Actions. Triggering an import within five minutes of its scheduled time may cause an error.
- API: Trigger imports using the File Imports Trigger API. Data Warehouses do not currently support these APIs.
Mapping Files and Data Mapping
A mapping file contains the mappings between each source column and a MoEngage attribute, along with the data type of the column. The file must be in JSON format. Instead of mapping columns one by one on the dashboard, you can upload a mapping file to automate the mapping.- CSV Files
- JSON Files
column(required): The column name from the source file. For Level 2 keys in a JSON file, use dot notation (key1.key2).moe_attr(required): The MoEngage attribute to map the column to. Ensure each column maps to a uniquemoe_attr.type(optional): The data type of the column. See the supported types below.datetime_format(optional): The date-time format. Mandatory for DateTime fields only.is_skipped(optional): A boolean field. Any column markedtrueis skipped during import.
Standard User Attributes for Reference
Map your source columns to MoEngage standard user attributes using the keys below. For the exhaustive list, refer to your Data Management dashboard.Supported Attribute Types
MoEngage does not support the
| (pipe) character in non-array type columns. Ensure your String, Numeric, and Boolean columns do not contain this character.Reserved Keywords for User Attributes
MoEngage reserves the following keys. Do not use them when you map or track user attributes.USER_ATTRIBUTE_UNIQUE_IDUSER_ATTRIBUTE_USER_EMAILUSER_ATTRIBUTE_USER_MOBILEUSER_ATTRIBUTE_USER_NAMEUSER_ATTRIBUTE_USER_GENDERUSER_ATTRIBUTE_USER_FIRST_NAMEUSER_ATTRIBUTE_USER_LAST_NAMEUSER_ATTRIBUTE_USER_BDAYUSER_ATTRIBUTE_NOTIFICATION_PREFUSER_ATTRIBUTE_OLD_IDMOE_TIME_FORMATMOE_TIME_TIMEZONEUSER_ATTRIBUTE_DND_START_TIMEUSER_ATTRIBUTE_DND_END_TIMEMOE_GAIDINSTALLUPDATEMOE_ISLATstatususer_idsource
Supported Datetime Formats
Use these formats in thedatetime_format field of your mapping file, or when configuring date-time columns during setup.
Frequently Asked Questions
My imports have failed. How do I check what went wrong?
My imports have failed. How do I check what went wrong?
Click the ellipsis on the right and click View to look up the Import details. Hover over the Failed Status to learn the reason.
What if a scheduled import adds the data into a recently archived segment?
What if a scheduled import adds the data into a recently archived segment?
In such cases, the new data will still be added to the archived segment. You can unarchive the segment as required.
Can an import be stopped while it's running?
Can an import be stopped while it's running?
Once an import process starts, it can’t be stopped midway. This is because the data goes through several steps, and interrupting it could lead to incomplete or inconsistent results. It’s best to let the current import finish.
How can I stop future runs of a scheduled import?
How can I stop future runs of a scheduled import?
Yes, you can stop future scheduled imports from running automatically. To do this, find the import schedule and select the Archive option from the Actions menu on the Data Imports dashboard. This will prevent it from running on its next scheduled time.
What should I do if an import seems stuck or is taking a long time?
What should I do if an import seems stuck or is taking a long time?
If an import appears to be stuck or is taking longer than usual, it’s best to wait. The system has checks in place to handle these situations automatically and retry if necessary. Manually starting the same import again while it’s still processing can cause conflicts and may prevent the original import from completing successfully.