Azure Blob Storage

Amplitude's Azure Blob Storage destination enables you to export Amplitude event data and merged user data to your Azure Blob Storage container. You can use Azure Blob Storage's container policies to manage and export this data programmatically into an Azure container. Amplitude allows recurring syncs as often as once per hour.

Azure prerequisites for Amplitude Data Export

Before you can export data from Amplitude to Azure Blob Storage, ensure your Azure environment meets the following prerequisites:

  1. Set Up Azure Storage Account and Container:

    If you haven't already set up an Azure Storage Account and a Blob Storage container, follow these guides:

  2. Create an Azure Service Principal:

    Create a service principal in Azure for Amplitude to use to access your Blob Storage. Copy the tenantId, clientId, and clientSecret, Amplitude requires these details to set up the connection with Azure. Follow this guide to create a service principal:

  3. Grant Required Permissions to Service Principal:

    Assign the necessary permissions for Azure Blob Storage to your service principal:


  • read to ensure data isn't exported more than once for recurring exports.

  • delete to enable deduplication during a manual export, for example when you export backfill data.

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete

For instructions on assigning these permissions for Azure Blob Storage, refer to:

  1. Configure Network Access:

    Ensure the Firewalls and Virtual Networks settings of your Azure Storage account allow access from the following Amplitude IP addresses:

    • Amplitude US IP addresses:
    • Amplitude EU IP addresses:

    For guidance on modifying these settings, see:

Once complete, these steps ensure your Azure environment is ready to receive secure data exports from Amplitude.

Set up a recurring data export to Azure Blob Storage

To export your Amplitude data to Azure Blob Storage:

  1. In Amplitude, navigate to Data -> Manage -> Destinations -> Add Destination.
  2. Select Azure Blob Storage - Events & Merged Users.
  3. On the Getting Started tab, select the data to export. Options include Export events ingested today and moving forward, Export all merged Amplitude IDs, or both. For events, you can also specify filtering conditions to only export events that meet certain criteria.


You can export these two different data types to separate containers, if you prefer. You'll just need to complete the setup flow twice: once for each data type.

  1. Review the Event table and Merge IDs table schemas and click Next.
  2. In the Set Up Credentials section, enter the tenantId, clientId, and clientSecret from the service principal you created.
  3. Complete the Azure Blob Storage container details in the Azure Blob Storage Container Details section. Click Next.
  4. Click Next. Amplitude attempts a test upload to check that the entered credentials work. If the upload is successful, click Finish to complete the Azure Blob Storage destination configuration and activation.

When complete, Amplitude sends all future events/merged users to your Azure Blob Storage once per hour.

Run a manual export

Complete a manual export to backfill and send historical data to Azure Blob Storage.

  1. Open the instance of the Azure Blob Storage destination you created above. Navigate to the Export Connection page.
  2. Go to Backfills tab.
  3. Select the date range to export.
  4. Click Start Backfill.

If the backfill date range overlaps with the date range of already exported data, Amplitude de-duplicates any overlapping data.

Exported data format

Raw event file and data format

Amplitude exports data hourly as a zipped archive of JSON files, partitioned by the hour with one or more files per hour. Each file contains one event JSON object per line.

File names have the following syntax, where the time represents when the data was uploaded to Amplitude servers in UTC (for example, server_upload_time):


For example, the first partition of data uploaded to this project, on Jan 25, 2020, between 5 PM and 6 PM UTC, is in the file:


The exported data JSON object schema is:

2 "server_received_time": UTC ISO-8601 timestamp,
3 "app": int,
4 "device_carrier": string,
5 "$schema":int,
6 "city": string,
7 "user_id": string,
8 "uuid": UUID,
9 "event_time": UTC ISO-8601 timestamp,
10 "platform": string,
11 "os_version": string,
12 "amplitude_id": long,
13 "processed_time": UTC ISO-8601 timestamp,
14 "user_creation_time": UTC ISO-8601 timestamp,
15 "version_name": string,
16 "ip_address": string,
17 "paying": boolean,
18 "dma": string,
19 "group_properties": dict,
20 "user_properties": dict,
21 "client_upload_time": UTC ISO-8601 timestamp,
22 "$insert_id": string,
23 "event_type": string,
24 "library":string,
25 "amplitude_attribution_ids": string,
26 "device_type": string,
27 "device_manufacturer": string,
28 "start_version": string,
29 "location_lng": float,
30 "server_upload_time": UTC ISO-8601 timestamp,
31 "event_id": int,
32 "location_lat": float,
33 "os_name": string,
34 "amplitude_event_type": string,
35 "device_brand": string,
36 "groups": dict,
37 "event_properties": dict,
38 "data": dict,
39 "device_id": string,
40 "language": string,
41 "device_model": string,
42 "country": string,
43 "region": string,
44 "is_attribution_event": bool,
45 "adid": string,
46 "session_id": long,
47 "device_family": string,
48 "sample_rate": null,
49 "idfa": string,
50 "client_event_time": UTC ISO-8601 timestamp,

Merged Amplitude IDs file and data format

Amplitude exports data as a zipped archive of JSON files. Each file contains one merged Amplitude ID JSON object per line.

File names have the following syntax, where the time represents when the data was uploaded to Amplitude servers in UTC (for example server_upload_time):


For example, data uploaded to this project, on Jan 25, 2020, between 5 PM and 6 PM UTC, is in the file:


The exported data JSON object schema is:

2 "scope": int,
3 "merge_time": long,
4 "merge_server_time": long,
5 "amplitude_id": long,
6 "merged_amplitude_id": long
Was this page helpful?

Thanks for your feedback!

June 21st, 2024

Need help? Contact Support


Have a look at the Amplitude Blog

Learn more at Amplitude Academy

© 2024 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.