Azure Blob Storage
Datafly Signal writes batches of first-party events as blobs into an Azure Blob Storage container — ready for query with Synapse, Databricks, Fabric, or your preferred analytics engine.
Why route Azure Blob Storage through Datafly Signal
- The data lands in infrastructure you own. Signal writes to your Azure Blob Storage directly from your own deployment. Datafly operates no intermediary and never holds a copy of your event data.
- Client IP and user agent are recorded as event context. Both come from the original visitor request rather than from your server, so geography and device analysis done in the warehouse reflects the actual visitor.
- Presets for Retail and General. The mapping starts from a working configuration for your vertical instead of a blank field map.
- One consent decision governs every destination. Azure Blob Storage is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Before configuring Azure Blob Storage in Signal, you need an Azure account with a Storage Account, a blob container, and a connection string.
Create an Azure Account
If you don’t already have one, sign up at azure.microsoft.com. Set up a subscription with billing configured.
Create a Storage Account
- In the Azure portal, search for Storage accounts and click Create.
- Select your Subscription and Resource group (or create a new one).
- Enter a Storage account name (e.g.
dataflysignalevents). Names must be globally unique, 3-24 characters, lowercase letters and numbers only. - Select a Region close to your Signal deployment.
- Choose Performance: Standard (recommended) or Premium.
- Choose Redundancy: LRS (cheapest), GRS, or ZRS based on your durability requirements.
- Click Review + Create > Create.
Create a Blob Container
- Open your new Storage Account in the Azure portal.
- In the left sidebar, click Containers (under Data storage).
- Click + Container.
- Enter a Name (e.g.
datafly-events). - Set Public access level to Private (recommended).
- Click Create.
Get the Connection String
- In your Storage Account, go to Security + networking > Access keys.
- Click Show next to one of the connection strings.
- Copy the full Connection string value.
Store the connection string securely. It provides full access to your storage account. Consider using a Shared Access Signature (SAS) with limited permissions for production deployments.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
account_name | string | Yes | The Azure Storage account name. Also accepts storage_account. |
container | string | Yes | The blob container name. Also accepts container_name. |
account_key | secret | One of these | Storage account access key. Also accepts connection_string. |
sas_token | secret | One of these | Optional SAS token granting Write + Create on the container — preferred over the account key for production. |
prefix | string | No | Optional prefix (virtual directory) prepended to all blob names. Include a trailing slash. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Azure Blob Storage or filter by Cloud Storage.
- Click Install, select a variant if available, and fill in the required fields.
- Click Install Integration to create the integration with a ready-to-use default blueprint.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/azure_blob/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Azure Blob Storage",
"variant": "default",
"config": {
"account_name": "dataflysignalevents",
"container": "datafly-events",
"account_key": "YOUR_STORAGE_ACCOUNT_KEY",
"prefix": "events/"
},
"delivery_mode": "server_side"
}'Schema
Signal writes batched events as newline-delimited JSON (NDJSON) blobs. Each line is one event using the canonical envelope (event_id, type, event, anonymous_id, user_id, timestamp, received_at, sent_at, context, properties, traits, source_id, integration_id).
Blob names follow the pattern <prefix>YYYY/MM/DD/HH/<batch-uuid>.json.gz, suitable for partitioned reads from Synapse, Databricks, or Fabric.
Consent
Azure Blob Storage is a first-party destination in your own subscription. The default blueprint forwards all events. Apply consent-aware filtering or partitioning via pipeline transforms on context.consent if needed.
Testing
- Enable the integration in Signal and trigger a test event on your website.
- In the Azure portal, open your Storage Account > Containers > your container.
- Browse the blob list and verify that event files are appearing under the configured prefix.
- Click on a blob to download and inspect the event data.
- In Signal, check the Live Events view to confirm delivery status shows as successful.
Troubleshooting
| Problem | Solution |
|---|---|
| Events not appearing in the container | Verify the storage account name, container name, and connection string are correct. |
AuthenticationFailed | The connection string is invalid or the account key has been rotated. Get a fresh connection string from Access Keys. |
ContainerNotFound | The container does not exist. Verify the container name in the Azure portal. |
AuthorizationPermissionMismatch | If using a SAS token, ensure it has Write and Create permissions on the container. |
| Blobs appearing but empty | Check the batch settings. Events are buffered before flushing to blobs. |
| Connection timeout | Verify the storage account is accessible from Signal’s network. Check any firewall rules under Networking > Firewalls and virtual networks. |
Visit Azure Blob Storage documentation for full API reference, lifecycle management, and access tier configuration.