Search specific term/phrase surrounded by double quotes. e.g. “deep linking”
Exclude records that contain a specific term prefixed with a minus. e.g. Android -Firebase

Schedule exports of log-level data from your Branch account.

Overview

Branch's Scheduled Log Exports API lets you schedule daily or hourly exports of log-level data from Branch.

These results are made available to you in one of three ways:

  1. The data is stored in Branch's AWS S3 bucket
  2. The data is delivered to your own cloud storage account (AWS or GCP)
  3. The data is delivered to you via email

You can stay on top of monitoring the data by creating a subscription to a particular feed. A subscription is a single report (which includes information such as data source, fields, and filters) that is set up to be exported over and over at a regular cadence.

A job represents one time that the report was run and data was exported. The result is one or more files with exported data. Depending on the cadence, a job results in exporting data for either one hour or one day.

Access to the Scheduled Log Exports API is restricted to Enterprise accounts. Please contact your Branch Account Manager to confirm if your account is eligible for enablement.

Benefits

With the Scheduled Log Exports API, your log-level data can be funneled to a number of different places, and new data is made available to you on a daily cadence.

Use Cases

  • Automate Branch log-level data retrieval based on a schedule (hourly or daily), selecting your own data fields and filters.
  • Set up notifications on sudden day-over-day increases/decreases in attributed installs.
  • Export your data directly to your cloud account. There is no need to manually request exports - instead, your data goes directly to your cloud storage where you can access it at any time.
  • Set up regular exports to agencies with the ability to hide certain data from partners to protect privacy, increasing your control over your data.
  • Set up recurring emails with custom reports to share agency-attributed installs with your agency via email. Also share ad network postback records with your ad network.

Limits

LimitDetails
Subscriptions35 subscriptions

If you need to generate more than 35 reports, you should start by exporting all of the data you need for a particular event in one subscription. Then, split that data into multiple reports from within your data warehouse.

Please note that Branch currently has fewer than 30 events (called "eo topics") available for export.
CadenceData is exported on a daily cadence.

Data is available roughly 6 hours after the end of a UTC day (usually sooner).

Try It!

Try out the Scheduled Log Exports API in your browser, using your Branch data:

Get External ID (only relevant if you are storing Branch data in your own cloud)

Create New Subscription

Deactivate Subscription

Get Details on Single Subscription

Get Details on All Subscriptions

Get Details on Single Export Job

Get Details on Many Export Jobs

Getting Started

Prerequisites

In order to use the Scheduled Log Exports API, you first need to:

  1. Create a Branch Dashboard.
  1. Make sure you have the appropriate permissions set on your account. See the "Access" section for more.

Cloud Storage

If you want to store your Scheduled Log Exports API data in your own cloud storage account (AWS or GCP), you will need to:

  1. Retrieve your external ID from Branch by using this API's /scheduled-exports/logs/subscription/externalId endpoint.
  2. Follow our cloud set up guide to properly configure your AWS or GCP account to receive data from Branch.
  3. Use this API's /scheduled-exports/logs/subscribe endpoint to create a new subscription that points the data to your cloud storage account.

Access

Access to the Scheduled Log Exports API is restricted to Enterprise accounts. Please contact your Branch Account Manager to confirm if your account is eligible for enablement.

General Access

To access the Scheduled Log Exports API, a user must have both Aggregate Data and Export access enabled on their account.

Agency Access

If you work with an agency that runs your advertising campaigns and want to give them access to export the subsequent data, you can give them Export and Aggregate Data access.

To provide an agency team member with access to the Scheduled Log Exports:

  1. In the left-hand navigation, under Setup & Testing, click on Account Settings.
  2. On the Account Settings page, click on the Agencies tab.
  3. Expand the agency in question, find the agency team member you want to give access to, hover on the button in the Actions column, and click Edit.
  4. In the Edit Agency Team Member modal:
    1. Under Access Level, check the Export box.
    2. Under Permissions, check the Aggregate Data box.
  5. Optional: add data filters
    1. Under Data Filters, toggle any necessary data filters on/blue. Exported data will be filtered accordingly.
  6. Click Save.
1246

Authentication

Calls to the Scheduled Log Exports API require an api_key and app_id query string parameters to be passed with each request.

Important notes about your API key:

  • API keys are generated on a per-user basis and are permanent.
  • In order to retrieve or reset your API key/access token, you must have Organizational Level access to the Branch account. This functionality is not present at the App Level.
  • If the api_key being used is deleted or permissions are removed, the scheduled export will no longer work and will be deactivated.
  • You must use the same api_key that was used to create the schedule originally in order to retrieve information regarding the subscription and the exports generated.

Learn how to retrieve your API key (also known as access_token) in our guide.

Usage

Get External ID

Branch provides a unique external ID for your Branch account.

This external ID can be used when setting up data to be exported to your own cloud service.

Your external ID is not relevant if you are accessing data via Branch's cloud or email.

Request Info

Endpoint

GET /scheduled-exports/logs/subscription/externalId?{app_id|organization_id}={id}

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Request Query Parameters

Provide one of the following two options:

ParameterDescriptionRequired
app_idThe app ID with which the Access Token and subscriptions are associated.Required if organization_id is not present
organization_idThe organization ID with which the Access Token and subscriptions are associated.Required if app_id is not present

Response Info

Response Body Parameters

ParameterDescription
external_idThe external ID associated with your Branch account.

For AWS, this external ID can be used in the Trust Relationship for the Role that you create to allow Branch to access your S3 bucket.

Example Request & Response

# Include either `app_id` or `organization_id` in request query

curl -H 'access-token: api_app_99999999999999999999999999999999' \
  'https://api2.branch.io/scheduled-exports/logs/subscription/externalId?app_id=123456789009876543'
{"external_id":"111111bbbb-bbb111-1b1b1b1-1111-bbb"}

Create New Subscription

This type of request sets up a new scheduled log export subscription. This is supported at both the app and org level.

The result of this request is a subscription that specifies what data will be exported and where that data will be exported to.

🚧

Duplicate Subscriptions

In order to prevent duplicate active subscriptions from being created accidentally, Branch will throw an error if you attempt to create a subscription that exactly matches an existing subscription.

This is based on the following values:

  • subscription_type
  • report_type
  • app_id or organization_id
  • fields
  • filter
  • cadence

However, simply re-ordering the values in fields is enough to bypass this check and create a new subscription.

Request Info

Endpoint

POST /scheduled-exports/logs/subscribe

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRequired
acceptapplication/jsonRecommended

Request Body Parameters

ParameterDescriptionRequired
reportAn object describing the report to be generated.Required
report.cadenceHow frequently to generate the report, and for what time period.

Options:
- Daily
- Hourly
Required
report.response_formatFormat that the report is delivered in.

Options:
- csv
- json
- parquet
Required
report.response_format_compressionThe file compression method to use for the data.

Default: gz

Options:
- gz
- snappy
No
response.report_typeThe topic to subscribe to for log-level data, also called the "eo topic". This is the data source from which data should be exported.

See the "Available Topics" section for a list of topics to choose from.
Required
report.report_fieldsThe fields related to the topic that should be exported. These fields will be represented by columns in the CSV file.

See the "Available Fields" section for a list of fields to choose from.
Required
report.filterFilter used to limit which data points should be exported. These data points will be represented by rows in the CSV file.

Learn more in the "Cthulhu Filter Specification" section.
No
destinationAn object containing information about where a finished report should be stored and how it can be accessed.Required
destination.subscription_typeOptions:
- branch (to send the data to Branch's AWS S3 bucket)
- cloud (to send the data to your own cloud)
- email (to receive a daily email with the data)

Learn more about sending data to your own cloud storage account in Branch's cloud setup guide.
Required
destination.cloudIf you set destination.subscription_type to cloud, set this parameter to the cloud provider want to use to store Branch data.

Options:
- s3 (AWS S3)
- gcs(Google Cloud Storage)
Required if subscription_type is set to cloud
destination.resource_access_idThe ID for the resource you own, which you are using to store Branch data.

AWS: The ARN for the AWS Role.

GCP: The full service account name, which looks like an email address, for example: [email protected].
Required if subscription_type is set to cloud
destination.bucketThe name of the bucket you own, which you are using to store Branch data.Required if subscription_type is set to cloud and you want to store Branch data in a bucket
destination.prefixThe prefix or folder you own, which you are using to store Branch data.

AWS: For the path s3://my-branch-export-bucket/my-folder/, this would be my-folder.

GCP: For the path /buckets/my-branch-bucket/objects/branch/important_reports/ this would be branch/important_reports.
Required if subscription_type is set to cloud and you want to store Branch data in a folder

Response Info

Response Body Parameters

ParameterDescription
subscription_idThe persistent ID created for and assigned to this subscription.

This ID is used to check the status of a subscription, locate recent export jobs, and make modifications.
statusThe status of the newly created subscription.

A subscription in the "ACTIVE" state means the subscription was set up successfully.

The "PENDING" state means that Branch is still testing the setup of the subscription. Branch does this by creating an initial test report to make sure the export works properly.

If the subscription is in the "FAILED" state, this means the test export was unsuccessful.
descriptionMore information about the status of the subscription.
subscription_urlUse this URL in the future to get details about this particular subscription. See the "Get Details on Individual Subscription" section for more.

Examples

Example Requests

The examples below demonstrate how to create a new subscription and make your data accessible in one of three ways: Branch's S3 storage, your own cloud storage, or a daily email.

#  Example Request: Store Data in Your Own Cloud

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' \
-H 'access-token: api_app_99999999999999999999999999999999' -d '{
  "report": {
    "cadence": "hourly",
    "response_format": "csv",
    "response_format_compression": "gz",
    "report_type": "eo_install",
    "report_fields": [
      "id",
      "timestamp",
      "user_data_os",
      "user_data_idfa",
      "user_data_aaid",
      "user_data_idfv"
    ],
    "filter": [
      "eq",
      "attributed",
      "true"
    ]
  },
  "destination": {
    "subscription_type": "cloud",
    "cloud": "s3",
    "resource_access_id": "arn:aws:iam::xxxxxxxxxxxx:role/Branch-Export-Upload-tbd",
    "bucket": "my-branch-export-bucket",
    "prefix": "my-folder"
  }
}' 'https://api2.branch.io/scheduled-exports/logs/subscribe?app_id=123456789009876543'
#  Example Request: Store Data in Branch's S3 Bucket

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' \
-H 'access-token: api_app_99999999999999999999999999999999' -d '{
  "report": {
    "cadence": "hourly",
    "response_format": "csv",
    "response_format_compression": "gz",
    "report_type": "eo_install",
    "report_fields": [
      "id",
      "timestamp",
      "user_data_os",
      "user_data_idfa",
      "user_data_idfv",
      "user_data_aaid"
    ],
    "filter": [
      "eq",
      "attributed",
      "true"
    ]
  },
  "destination": {
    "subscription_type": "branch"
  }
}' 'https://api2.branch.io/scheduled-exports/logs/subscribe?app_id=123456789009876543'
# Example Request: Receive a Daily Email

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' \
-H 'access-token: api_app_99999999999999999999999999999999' -d '{
  "report": {
    "cadence": "hourly",
    "response_format": "csv",
    "response_format_compression": "gz",
    "report_type": "eo_install",
    "report_fields": [
      "id",
      "timestamp",
      "user_data_os",
      "user_data_idfa",
      "user_data_idfv",
      "user_data_aaid"
    ],
    "filter": [
      "eq",
      "attributed",
      "true"
    ]
  },
  "destination": {
    "subscription_type": "email",
    "recipient_emails": [ "[email protected]" ]
  }
}' 'https://api2.branch.io/scheduled-exports/logs/subscribe?app_id=123456789009876543'

Example Generic Response

{
  "subscription_id": "0000aaaa-00-0a0a-0000",
  "status": "PENDING",
  "description": "Generating sample report. Subscription will finish after Report is uploaded",
  "subscription_url": "https://api2.branch.io/scheduled-exports/exports/logs/subscription/0000aaaa-00-0a0a-0000?app_id=123456789009876543"
}

Deactivate Subscription

Request Info

Endpoint

DELETE /scheduled-exports/logs/subscription/{subscription_id}?{app_id|organization_id}={id}

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Request Query Parameters

ParameterDescriptionRequired
subscription_idThe subscription_id for the subscription you want to deactivate.

You can only deactivate one subscription at a time.
Required
app_idThe app ID with which the Access Token is associated.Required if organization_id is not present
organization_idThe organization ID with which the Access Token is associated.Required if app_id is not present

Response Info

Response Body Parameters

ParameterDescription
statusWhether your deactivation request was successful.
descriptionAdditional information about the status of your request.

Example Request & Response

# Include either `app_id` or `organization_id` in request query

curl -X DELETE -H 'access-token: api_app_99999999999999999999999999999999' \
  'https://api2.branch.io/scheduled-exports/logs/subscription/0000aaaa-00-0a0a-0000?app_id=123456789009876543'
{
  "status": "SUCCESS",
  "description": "Subscription deactivated successfully"
}

Get Details on Single Subscription

Returns a single export subscription for a given subscription ID.

See what data is being exported and where data is exported to (Branch's cloud, your own cloud, or email).

Request Info

Endpoint

GET /scheduled-exports/logs/subscription/{subscription_id}?{app_id|organization_id}={id}

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Request Query Parameters

ParameterDescriptionRequired
subscription_idThe relevant subscription ID.Required
app_idThe app ID with which the Access Token is associated.Required if organization_id is not present
organization_idThe organization ID with which the Access Token is associated.Required if app_id is not present

Response Info

Response Body Parameters

ParameterDescription
subscription_idThe persistent ID created for and assigned to this subscription.
reportAn object describing the report to be generated.
report.cadenceHow frequently to generate the report, and for what time period.

Options:
- Daily
- Hourly
report.response_formatFormat that the report is delivered in.

Options:
- csv
- json
- parquet
report.response_format_compressionThe file compression method to use for the data.

Default: gz

Options:
- gz
- snappy
response.report_typeThe topic to subscribe to for log-level data, also called the "eo topic". This is the data source from which data should be exported.

See the "Available Topics" section for a list of topics to choose from.
report.report_fieldsThe fields related to the topic that should be exported. These fields will be represented by columns in the CSV file.

See the "Available Fields" section for a list of fields to choose from.
report.filterFilter used to limit which data points should be exported. These data points will be represented by rows in the CSV file.

Learn more in the "Cthulhu Filter Specification" section.
report.subscription_statusThe current status of this subscription.
destinationAn object containing information about where a finished report should be stored and how it can be accessed.
destination.subscription_typeWhere the finished report is stored and how it can be accessed.

Options:
- branch (data sent to Branch's AWS S3 bucket)
- cloud (data sent to your own cloud)
- email (data sent via a daily email)
destination.cloudIf destination.subscription_type is cloud, this parameter will be populated with the cloud service you are using to store Branch data.
destination.resource_access_idIf destination.subscription_type is cloud, this parameter will be populated with the ID for the resource you are using to store Branch data.
destination.bucketIf destination.subscription_type is cloud, this parameter will be populated with the name of the bucket you are using to store Branch data.
destination.prefixIf destination.subscription_type is cloud, this parameter will be populated with the prefix or folder you are using to store Branch data.

Example Request & Response

# Include either `app_id` or `organization_id` in request query

curl -H 'access-token: api_app_99999999999999999999999999999999' \
  'https://api2.branch.io/scheduled-exports/logs/subscription/0000aaaa-00-0a0a-0000?app_id=123456789009876543'
{
  "subscription_id": "0000aaaa-00-0a0a-0000",
  "report": {
    "cadence": "hourly",
    "filter": [
      "eq",
      "attributed",
      "true"
    ],
    "response_format": "csv",
    "response_format_compression": "gz",
    "report_type": "eo_install",
    "report_fields": [
      "id",
      "timestamp",
      "user_data_os",
      "user_data_idfa",
      "user_data_idfv",
      "user_data_aaid"
    ],
    "subscription_status": "ACTIVE"
  },
  "destination": {
    "cloud": null,
    "bucket": null,
    "prefix": null,
    "subscription_type": "branch",
    "resource_access_id": null
  }
}

Get Details on All Subscriptions

Returns all export subscriptions for a given app or organization ID.

See what data is being exported and where data is exported to (Branch's cloud, your own cloud, or email).

Request Info

Endpoint

GET /scheduled-exports/logs/subscriptions?[app_id|organization_id]={id}

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Request Query Parameters

Provide one of the following two options:

ParameterDescriptionRequired
app_idThe app ID with which the Access Token and subscriptions are associated.Required if organization_id is not present
organization_idThe organization ID with which the Access Token and subscriptions are associated.Required if app_id is not present

Response Info

Response Body Parameters

An array of subscriptions is returned.

For each unique subscription, the following fields are returned:

ParameterDescription
subscription_idThe persistent ID created for and assigned to this subscription.
reportAn object describing the report to be generated.
report.cadenceHow frequently to generate the report, and for what time period.

Options:
- Daily
- Hourly
report.response_formatFormat that the report is delivered in.

Options:
- csv
- json
- parquet
report.response_format_compressionThe file compression method to use for the data.

Default: gz

Options:
- gz
- snappy
response.report_typeThe topic to subscribe to for log-level data, also called the "eo topic". This is the data source from which data should be exported.

See the "Available Topics" section for a list of topics to choose from.
report.report_fieldsThe fields related to the topic that should be exported. These fields will be represented by columns in the CSV file.

See the "Available Fields" section for a list of fields to choose from.
report.filterFilter used to limit which data points should be exported. These data points will be represented by rows in the CSV file.

Learn more in the "Cthulhu Filter Specification" section.
report.subscription_statusThe current status of this subscription.
destinationAn object containing information about where a finished report should be stored and how it can be accessed.
destination.subscription_typeWhere the finished report is stored and how it can be accessed.

Options:
- branch (data sent to Branch's AWS S3 bucket)
- cloud (data sent to your own cloud)
- email (data sent via a daily email)
destination.cloudIf destination.subscription_type is cloud, this parameter will be populated with the cloud service you are using to store Branch data.
destination.resource_access_idIf destination.subscription_type is cloud, this parameter will be populated with the ID for the resource you are using to store Branch data.
destination.bucketIf destination.subscription_type is cloud, this parameter will be populated with the name of the bucket you are using to store Branch data.
destination.prefixIf destination.subscription_type is cloud, this parameter will be populated with the prefix or folder you are using to store Branch data.

Example Request & Response

curl -H 'access-token: api_app_99999999999999999999999999999999' \
  'https://api2.branch.io/scheduled-exports/logs/subscriptions?app_id=123456789009876543'
[
  {
    "subscription_id": "0000aaaa-00-0a0a-0000",
    "report": {
      "cadence": "hourly",
      "filter": [
        "eq",
        "attributed",
        "true"
      ],
      "response_format": "csv",
      "response_format_compression": "gz",
      "report_type": "eo_install",
      "report_fields": [
        "id",
        "timestamp",
        "user_data_os",
        "user_data_idfa",
        "user_data_idfv",
        "user_data_aaid"
      ],
      "subscription_status": "ACTIVE"
    },
    "destination": {
      "cloud": null,
      "bucket": null,
      "prefix": null,
      "subscription_type": "branch",
      "resource_access_id": null
    }
  },
	{
    "subscription_id": "222cc2-ccc-22c-2222",
    "report": {
      "cadence": "daily",
      "filter": [
        "eq",
        "attributed",
        "true"
      ],
      "response_format": "csv",
      "response_format_compression": "gz",
      "report_type": "eo_install",
      "report_fields": [
        "id",
        "timestamp",
        "user_data_os",
        "user_data_idfa",
        "user_data_idfv",
        "user_data_aaid"
      ],
      "subscription_status": "ACTIVE"
    },
    "destination": {
      "cloud": "s3",
      "bucket": "my-branch-export-bucket",
      "prefix": "my-folder",
      "subscription_type": "cloud",
      "resource_access_id": "arn:aws:iam::xxxxxxxxxxxx:role/Branch-Export-Upload-tbd"
    }
  }
]

Get Details on Single Export Job

Scheduled exports run at a regular cadence. Each individual run is considered a "job" and has a "job ID".

You can get details on an individual job via this endpoint, as long as you know the subscription_id and the job_id. This includes where data was exported to (Branch's cloud, your own cloud, or email).

If you do not know the job_id and are instead trying to discover jobs associated with a particular subscription, see the "Get Details on Many Export Jobs" section.

Request Info

Endpoint

GET /scheduled-exports/logs/subscription/{subscription_id}/job/{job_id}

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Response Path Parameters

ParameterDescription
subscription_idThe relevant subscription ID.
job_idThe persistent identifier for this export job run.

Request Query Parameters

Provide one of the following two options:

ParameterDescriptionRequired
app_idThe app ID with which the Access Token and subscriptions are associated.Required if organization_id is not present
organization_idThe organization ID with which the Access Token and subscriptions are associated.Required if app_id is not present

Response Info

Response Body Parameters

ParameterDescription
job_idThe persistent identifier for this export job run.
statusThe state that the job is in.

Options:
PENDING_GENERATION
PENDING_UPLOAD
RUNNING
SUCCEEDED
FAILED
start_dateThe earliest date for which exported objects will be included. Timezone is UTC.

Format: yyyy-MM-dd'T'HH:mm:ssZ
end_dateThe latest date for which exported objects will be included. Timezone is UTC.

Format: "yyyy-MM-dd'T'HH:mm:ssZ"

Note: This value includes data through the final millisecond. So if end_date is 2021-09-30T19:59:59, this export job run will include data through 2021-09-30T19:59:59.999.
export_urlIf the export job is for a subscription where destination.subscription_type is set to branch, then this will be an array of pre-signed S3 URLs for export files that you can download.
lines_exportedNumber of objects in the export (i.e., CSV rows).

Example Request & Response

curl -H 'access-token: api_app_99999999999999999999999999999999' \
  'https://api2.branch.io/scheduled-exports/logs/subscription/0000aaaa-00-0a0a-0000/job/185c97bb-f928-4f0a-b295-63f2a087780e?app_id=123456789009876543'
{
  "job_id": "185c97bb-f928-4f0a-b295-63f2a087780e",
  "status": "SUCCEEDED",
  "start_date": "2021-09-16T01:00:00",
  "end_date": "2021-09-16T01:59:59",
  "export_url": [
    "https://branch-exports-web.s3.us-west-1.amazonaws.com/v2/y%3D2021/m%3D09/d%3D16/app_id%3D123456789009876543/job_id%3D185c97bb-f928-4f0a-b295-63f2a087780e/task_id%3D0/123456789009876543-2021-09-16-eo_install-v2-7b7b72ee4e1a68a1ab57b626d3bc3701f0f39f4b976141fc5fcadf83e5ba5605-FSQEXZ-0.csv.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210916T023737Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604800&X-Amz-Credential=AKIA3HUFQARV3GLL7FKD%2F20210916%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Signature=19ad618f5c8a13bdf072925f664699c522b525187a968fb33442cb4abc915680"
  ],
  "lines_exported": 43
}

Get Details on Many Export Jobs

Scheduled exports run at a regular cadence. Each individual run is considered a "job" and has a "job ID".

You can get details on all recent export jobs for the subscription. This includes where data was exported to (Branch's cloud, your own cloud, or email).

Request Info

Endpoint

GET /scheduled-exports/logs/subscription/{subscription_id}/jobs

Request Headers

HeaderDescriptionRequired
access-tokenKey that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication.Required
content-typeapplication/jsonRecommended
acceptapplication/jsonRecommended

Request Path Parameters

ParameterDescription
subscription_idThe relevant subscription ID.

Request Query Parameters

ParameterDescription
start_dateThe earliest date of export job runs to be included. Timezone is UTC.

Format: yyyy-MM-dd'T'HH:mm:ssZ
end_dateLatest date of export job runs to be included. Timezone is UTC.

Format: "yyyy-MM-dd'T'HH:mm:ssZ"

Response Body Parameters

An array of jobs is returned.

For each unique job, the following fields are returned:

ParameterDescription
job_idThe persistent identifier for this export job run.
statusThe state that the job is in.

Options:
PENDING_GENERATION
PENDING_UPLOAD
RUNNING
SUCCEEDED
FAILED
start_dateThe earliest date for which exported objects will be included. Timezone is UTC.

Format: yyyy-MM-dd'T'HH:mm:ssZ
end_dateThe latest date for which exported objects will be included. Timezone is UTC.

Format: "yyyy-MM-dd'T'HH:mm:ssZ"

Note: This value includes data through the final millisecond. So if end_date is 2021-09-30T19:59:59, this export job run will include data through 2021-09-30T19:59:59.999.
export_urlIf the export job is for a subscription where destination.subscription_type is set to branch, then this will be an array of pre-signed S3 URLs for export files that you can download.
lines_exportedNumber of objects in the export (i.e., CSV rows).

Example Request & Response

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' \
-H 'access-token: api_app_99999999999999999999999999999999' -d '{
"start_date": "2021-08-16T02:00:00"
"end_date": "2021-08-16T02:59:59"
}'https://api2.branch.io/scheduled-exports/logs/subscription/13dbe05c-175b-11ec-9621-0242ac130002?app_id=123456789009876543'
{
  "job_id": "185c97bb-f928-4f0a-b295-63f2a087780e",
  "status": "SUCCEEDED",
  "start_date": "2021-09-16T01:00:00",
  "end_date": "2021-09-16T01:59:59",
  "export_url": [
    "https://branch-exports-web.s3.us-west-1.amazonaws.com/v2/y%3D2021/m%3D09/d%3D16/app_id%3D123456789009876543/job_id%3D185c97bb-f928-4f0a-b295-63f2a087780e/task_id%3D0/123456789009876543-2021-09-16-eo_install-v2-xxxxxxxx-FSQEXZ-0.csv.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210916T023737Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604800&X-Amz-Credential=AKIA3HUFQARV3GLL7FKD%xxxxxxxx%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Signature=xxxxxxxxxxxxxxxxxx"
  ],
  "job_id": "225c97bb-f348-3c0a-d545-88c2b093710f",
  "status": "SUCCEEDED",
  "start_date": "2021-08-16T02:00:00",
  "end_date": "2021-08-16T02:59:59",
  "export_url": [
    "https://branch-exports-web.s3.us-west-1.amazonaws.com/v2/y%4D2021/m%4D09/d%4D16/app_id%4D123456789009876543/job_id%4D185c97bb-f928-4f0a-c295-63f2a087780e/task_id%4D0/223456789009876543-2021-09-16-eo_install-v2-xxxxxxxx-FSQEXZ-2.csv.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210916T023737Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604800&X-Amz-Credential=AKIA3HUFQARV3GLL7FKD%xxxxxxxx%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Signature=xxxxxxxxxxxxxxxxxx"
  ],  
  "lines_exported": 86
}

Appendix

Testing and Best Practices

Test Export and Cadence

  1. Set up the subscription
    1. Ensure that report.subscription_status field is set to ACTIVE
    2. Branch recommends setting report.cadence to hourly so you can validate the export sooner
  2. Wait for a test export run to complete and confirm the data looks as expected

Subscription Status Pending

If you check the report.subscription_status and it is in the PENDING state, wait a few minutes and try again. You should see it update to ACTIVE.

Querying Exported Data

Once the value of report.subscription_status is ACTIVE, Branch recommends searching through a full day's worth of data initially (set via the start_date and end_date parameters), then narrowing down after that if you plan to export data one hour at a time.

Available Topics

TopicHuman Readable Name
eo_click_blockedBlocked Clicks
eo_commerce_event_blockedBlocked Commerce Events
eo_content_event_blockedBlocked Content Events
eo_branch_cta_view_blockedBlocked CTA Views
eo_custom_event_blockedBlocked Custom Events
eo_impression_blockedBlocked Impressions
eo_install_blockedBlocked Installs
eo_open_blockedBlocked Opens
eo_pageview_blockedBlocked Pageviews
eo_reinstall_blockedBlocked Reinstalls
eo_sms_sent_blockedBlocked SMS Sent
eo_user_lifecycle_event_blockedBlocked User Lifecycle Events
eo_web_session_start_blockedBlocked Web Session Starts
eo_clickClicks
eo_commerce_eventCommerce Events
eo_content_eventContent Events
eo_branch_cta_viewCTA Views
eo_custom_eventCustom Events
eo_impressionImpressions
eo_installInstalls
eo_openOpens
eo_pageviewPageviews
webhook2Postback Records
eo_reinstallReinstalls
skadnetwork_invalid_messagesSKAdNetwork Invalid Messages
skadnetwork_valid_messagesSKAdNetwork Valid Messages
eo_sms_sentSMS Sent
eo_user_lifecycle_eventUser Lifecycle Events
eo_web_session_startWeb Session Starts
eo_san_touchSelf-Attributing Network Touch

Available Fields

FieldsTypeDescription
app_idLongApp ID (capitalize ID in Liveview)
app_nameStringApp Name
attributedBooleanAttributed
content_itemsArrayStructContent Items
custom_dataMapStringStringCustom Data
customer_event_aliasStringCustomer Event Alias
days_from_last_attributed_touch_to_eventIntegerDays From Last Attributed Touch To Event
deep_linkedBooleanDeep Linked
di_match_click_tokenLongDI Match Click Token
event_data_ad_typeenum { BANNER, INTERSTITIAL, REWARDED_VIDEO, NATIVE }Ad Type
event_data_affiliationStringAffiliation
event_data_couponStringCoupon
event_data_currencyStringCurrency
event_data_descriptionStringEvent Description
event_data_exchange_rateDoubleExchange Rate
event_data_revenueDoubleRevenue
event_data_revenue_in_usdDoubleRevenue In USD
event_data_search_queryStringSearch Query
event_data_shippingDoubleShipping
event_data_taxDoubleTax
event_data_transaction_idStringTransaction ID
event_data_local_currencyStringLocal Currency
event_data_local_currency_exchange_rateStringLocal Currency Exchange Rate
event_data_revenue_in_local_currencyStringRevenue in Local Currency
event_data_custom_param_1StringCustom parameter for event
event_data_custom_param_2StringCustom parameter for event
event_data_custom_param_3StringCustom parameter for event
event_timestampLongEvent Timestamp
existing_userBooleanExisting User
external_intent_uriStringExternal Intent URI
first_event_for_userBooleanFirst Event For User
hash_versionStringHash Version
hours_from_last_attributed_touch_to_eventIntegerHouse From Last Attributed Touch To Event
idStringID
install_activity_attributedBooleanInstall Attributed
install_activity_data_has_clicked_adBooleanInstall Has Clicked Ad
install_activity_data_has_clicked_emailBooleanInstall Has Clicked Email
install_activity_timestampLongInstall Timestamp
install_activity_touch_data_additional_data_tilde_ad_idLongInstall Ad ID
install_activity_touch_data_additional_data_tilde_ad_set_idLongInstall Ad Set ID
install_activity_touch_data_additional_data_tilde_campaign_idLongInstall Campaign ID
install_activity_touch_data_additional_data_tilde_creative_idLongInstall Creative ID
install_activity_touch_data_dollar_3pStringInstall Partner 3p Value
install_activity_touch_data_plus_via_featuresStringInstall Features
install_activity_touch_data_plus_web_formatStringInstall Web Format
install_activity_touch_data_tilde_ad_nameStringInstall Ad Name
install_activity_touch_data_tilde_ad_set_nameStringInstall Ad Set Name
install_activity_touch_data_tilde_advertising_partner_idLongInstall Ad Partner ID
install_activity_touch_data_tilde_advertising_partner_nameStringInstall Ad Partner
install_activity_touch_data_tilde_agencyStringInstall Agency
install_activity_touch_data_tilde_agency_idLongInstall Agency ID
install_activity_touch_data_tilde_campaignStringInstall Campaign
install_activity_touch_data_tilde_channelStringInstall Channel
install_activity_touch_data_tilde_creative_nameStringInstall Creative Name
install_activity_touch_data_tilde_customer_ad_nameStringInstall Customer Ad Name
install_activity_touch_data_tilde_customer_ad_set_nameStringInstall Customer Ad Set Name
install_activity_touch_data_tilde_customer_campaignStringInstall Customer Campaign
install_activity_touch_data_tilde_customer_keywordStringInstall Customer Keyword
install_activity_touch_data_tilde_customer_placementStringInstall Customer Placement
install_activity_touch_data_tilde_customer_secondary_publisherStringInstall Customer Secondary Publisher
install_activity_touch_data_tilde_customer_sub_site_nameStringInstall Customer Sub Site Name
install_activity_touch_data_tilde_featureStringInstall Feature
install_activity_touch_data_tilde_journey_nameStringInstall Journey Name
install_activity_touch_data_tilde_keywordStringInstall Keyword
install_activity_touch_data_tilde_placementStringInstall Placement
install_activity_touch_data_tilde_secondary_publisherStringInstall Secondary Publisher
install_activity_touch_data_tilde_stageStringInstall Stage
install_activity_touch_data_tilde_tagsStringInstall Tags
install_activity_touch_data_tilde_view_nameStringInstall View Name`
install_activity_touch_typeStringInstall Touch Type
last_attributed_touch_data_custom_fieldsStringLast Attributed Touch Custom Fields
last_attributed_touch_data_dollar_3pStringAd Partner (3p)
last_attributed_touch_data_dollar_marketing_titleStringMarketing Title
last_attributed_touch_data_plus_current_featureStringCurrent Feature
last_attributed_touch_data_tilde_idLongLast Attributed Touch ID
last_attributed_touch_data_plus_touch_idStringLast Attributed Touch Touch ID
last_cta_view_data_plus_touch_idStringLast CTA View Touch ID
last_attributed_touch_data_plus_via_featuresArrayStringVia Features
last_attributed_touch_data_plus_web_formatStringWeb Format
last_attributed_touch_data_tilde_ad_idStringAd ID
last_attributed_touch_data_tilde_ad_nameStringAd Name
last_attributed_touch_data_tilde_ad_set_idStringAd Set ID
last_attributed_touch_data_tilde_ad_set_nameStringAd Set Name
last_attributed_touch_data_tilde_advertising_account_nameStringAdvertising Account Name
last_attributed_touch_data_tilde_advertising_account_idStringAdvertising Account ID
last_attributed_touch_data_tilde_advertising_partner_idStringAd Partner ID
last_attributed_touch_data_tilde_advertising_partner_nameStringAd Partner
last_attributed_touch_data_tilde_agencyStringAgency
last_attributed_touch_data_tilde_agency_idStringAgency ID
last_attributed_touch_data_tilde_banner_dimensionsStringBanner Dimensions
last_attributed_touch_data_tilde_branch_ad_formatStringBranch Ad Format
last_attributed_touch_data_tilde_campaignStringCampaign
last_attributed_touch_data_tilde_campaign_idStringCampaign ID
last_attributed_touch_data_tilde_campaign_typeStringCampaign Type
last_attributed_touch_data_tilde_channelStringChannel
last_attributed_touch_data_tilde_creative_nameStringCreative Name
last_attributed_touch_data_tilde_creative_idStringCreative ID
last_attributed_touch_data_tilde_customer_ad_nameStringCustomer Ad Name
last_attributed_touch_data_tilde_customer_ad_set_nameStringCustomer Ad Set Name
last_attributed_touch_data_tilde_customer_campaignStringCustomer Campaign
last_attributed_touch_data_tilde_customer_keywordStringCustomer Keyword
last_attributed_touch_data_tilde_customer_placementStringCustomer Placement
last_attributed_touch_data_tilde_customer_secondary_publisherStringCustomer Secondary Publisher
last_attributed_touch_data_tilde_customer_sub_site_nameStringCustomer Sub Site Name
last_attributed_touch_data_tilde_external_touch_idStringExternal Touch ID
last_attributed_touch_data_tilde_featureStringFeature
last_attributed_touch_data_tilde_journey_idStringJourney ID
last_attributed_touch_data_tilde_journey_nameStringJourney Name
last_attributed_touch_data_tilde_keywordStringKeyword
last_attributed_touch_data_tilde_keyword_idStringKeyword ID
last_attributed_touch_data_tilde_optimization_modelStringOptimization Model
last_attributed_touch_data_tilde_placementStringPlacement
last_attributed_touch_data_tilde_placement_idStringPlacement ID
last_attributed_touch_data_tilde_secondary_ad_formatStringSecondary Ad Format
last_attributed_touch_data_tilde_secondary_publisherStringSecondary Publisher
last_attributed_touch_data_tilde_secondary_publisher_idStringSecondary Publisher ID
last_attributed_touch_data_tilde_stageStringStage
last_attributed_touch_data_tilde_sub_site_nameStringSub Site Name
last_attributed_touch_data_tilde_tagsArrayStringTags
last_attributed_touch_data_tilde_technology_partnerStringTechnology Partner
last_attributed_touch_data_tilde_touch_subtypeStringGoogle Video Ads "Engaged View"
last_attributed_touch_data_tilde_view_idStringView ID
last_attributed_touch_data_tilde_view_nameStringView Name
last_attributed_touch_timestampLongLast Attributed Touch Timestamp
last_attributed_touch_timestamp_isoStringLast Attributed Touch Timestamp (ISO)
last_attributed_touch_typeStringLast Attributed Touch Type
last_cta_view_data_custom_fieldsStringLast CTA View Custom Fields
last_cta_view_data_dollar_3pStringLast CTA View Ad Partner (3p)
last_attributed_touch_data_plus_referring_domainStringReferring Domain
last_cta_view_data_plus_via_featuresArrayStringLast CTA View Via Features
last_cta_view_data_plus_web_formatStringLast CTA View Web Format
last_cta_view_data_tilde_ad_idStringLast CTA View Ad ID
last_cta_view_data_tilde_ad_nameStringLast CTA View Ad Name
last_cta_view_data_tilde_ad_set_idStringLast CTA View Ad Set ID
last_cta_view_data_tilde_ad_set_nameStringLast CTA View Ad Set Name
last_cta_view_data_tilde_advertising_partner_nameStringLast CTA View Ad Partner
last_cta_view_data_tilde_agencyStringLast CTA View Agency
last_cta_view_data_tilde_banner_dimensionsStringLast CTA View Banner Dimensions
last_cta_view_data_tilde_branch_ad_formatStringLast CTA View Branch Ad Format
last_cta_view_data_tilde_campaignStringLast CTA View Campaign
last_cta_view_data_tilde_campaign_idStringLast CTA View Campaign ID
last_cta_view_data_tilde_campaign_typeStringLast CTA View Campaign Type
last_cta_view_data_tilde_channelStringLast CTA View Channel
last_cta_view_data_tilde_creative_idStringLast CTA View Creative ID
last_cta_view_data_tilde_creative_nameStringLast CTA View Creative Name
last_cta_view_data_tilde_external_touch_idLongLast CTA View External Touch ID
last_cta_view_data_tilde_featureStringLast CTA View Feature
last_cta_view_data_tilde_idLongLast CTA View ID
last_cta_view_data_tilde_keyword_idStringLast CTA View Keyword ID
last_cta_view_data_tilde_optimization_modelStringLast CTA View Optimization Model
last_cta_view_data_tilde_placementStringLast CTA View Placement
last_cta_view_data_tilde_secondary_ad_formatStringLast CTA View Secondary Ad Format
last_cta_view_data_tilde_secondary_publisherStringLast CTA View Secondary Publisher<
last_cta_view_data_tilde_stageStringLast CTA View Stage
last_cta_view_data_tilde_tagsArrayStringLast CTA View Tags
last_cta_view_data_tilde_technology_partnerStringLast CTA View Technology Partner
last_cta_view_timestampLongLast CTA View Timestamp
last_cta_view_timestamp_isoStringLast CTA View Timestamp (ISO)
\+match_guaranteedbooleanFlag that determines if the app session was made with 100% accuracy. Only available in Custom Exports API
minutes_from_last_attributed_touch_to_eventIntegerMinutes From Last Attributed Touch To Event
nameStringName of event based on selected topic
organization_idLongOrganization ID
organization_nameStringOrganization Name
originStringOrigin
reengagement_activity_attributedBooleanReengagement Activity Attribute
reengagement_activity_data_has_clicked_adBooleanReengagement Has Clicked Ad
reengagement_activity_data_has_clicked_emailBooleanReengagement Has Clicked Email
reengagement_activity_timestampStringReengagement Timestamp
reengagement_activity_touch_data_additional_data_tilde_ad_idLongReengagement Ad ID
reengagement_activity_touch_data_additional_data_tilde_ad_set_idLongReengagement Ad Set ID
reengagement_activity_touch_data_additional_data_tilde_campaign_idLongReengagement Campaign ID
reengagement_activity_touch_data_additional_data_tilde_creative_idLongReengagement Creative ID
reengagement_activity_touch_data_dollar_3pStringReengagement Partner 3p Value
reengagement_activity_touch_data_plus_via_featuresStringReengagement Features
reengagement_activity_touch_data_plus_web_formatStringReengagement Web Format
reengagement_activity_touch_data_tilde_ad_nameStringReengagement Ad Name
reengagement_activity_touch_data_tilde_ad_set_nameStringReengagement Ad Set Name
reengagement_activity_touch_data_tilde_advertising_partner_idLongReengagement Advertising Partner ID
reengagement_activity_touch_data_tilde_advertising_partner_nameStringReengagement Advertising Partner Name
reengagement_activity_touch_data_tilde_agencyStringReengagement Agency
reengagement_activity_touch_data_tilde_agency_idLongReengagement Agency ID
reengagement_activity_touch_data_tilde_campaignStringReengagement Campaign
reengagement_activity_touch_data_tilde_channelStringReengagement Channel
reengagement_activity_touch_data_tilde_creative_nameStringReengagement Creative Name
reengagement_activity_touch_data_tilde_customer_ad_nameStringReengagement Customer Ad Name
reengagement_activity_touch_data_tilde_customer_ad_set_nameStringReengagement Customer Ad Set Name
reengagement_activity_touch_data_tilde_customer_campaignStringReengagement Customer Campaign
reengagement_activity_touch_data_tilde_customer_keywordStringReengagement Customer Keyword
reengagement_activity_touch_data_tilde_customer_placementStringReengagement Customer Placement
reengagement_activity_touch_data_tilde_customer_secondary_publisherStringReengagement Customer Secondary Publisher
reengagement_activity_touch_data_tilde_customer_sub_site_nameStringReengagement Customer Sub Site
reengagement_activity_touch_data_tilde_featureStringReengagement Feature
reengagement_activity_touch_data_tilde_journey_nameStringReengagement Journey Name
reengagement_activity_touch_data_tilde_keywordStringReengagement Keyword
reengagement_activity_touch_data_tilde_placementStringReengagement Placement
reengagement_activity_touch_data_tilde_secondary_publisherStringReengagement Secondary Publisher
reengagement_activity_touch_data_tilde_stageStringReengagement Stage
reengagement_activity_touch_data_tilde_tagsStringReengagement Tags
reengagement_activity_touch_data_tilde_view_nameStringReengagement View Name
reengagement_activity_touch_typeStringReengagement Touch Type
referrer_click_timestampLongReferrer Click Timestamp
seconds_from_install_to_eventIntegerSeconds From Install To Event
seconds_from_last_attributed_touch_to_eventIntegerSeconds From Last Attributed Touch To Event
seconds_from_last_attributed_touch_to_store_install_beginIntegerSeconds From Touch To Store Install Begin
site_event_items_countIntegerContent Items Count
store_install_begin_timestampLongStore Install Begin Timestamp
timestampLongTimestamp
timestamp_isoStringTimestamp (ISO)
user_data_aaidStringAAID
user_data_android_idStringAndroid ID
user_data_app_versionStringApp Version
user_data_brandStringBrand
user_data_browserStringBrowser
user_data_buildStringBuild
user_data_cpu_typeStringCPU Type
user_data_cross_platform_idStringCross Platform ID
user_data_developer_identityStringDeveloper Identity
user_data_device_typeStringDevice Type
user_data_environmentStringEnvironment
user_data_geo_city_codeIntegerCity Code
user_data_geo_city_enStringCity
user_data_geo_country_codeStringCountry Code
user_data_geo_country_enStringCountry
user_data_geo_dma_codeIntegerDMA Code
user_data_geo_latFloatLatitude
user_data_geo_lonFloatLongitude
user_data_geo_postal_codeStringPostal Code
user_data_geo_region_enStringRegion
user_data_geo_region_codeStringRegion Code
user_data_http_referrerStringHTTP Referrer
user_data_idfaStringIDFA
user_data_idfvStringIDFV
user_data_internet_connection_typeStringInternet Connection Type
user_data_ipStringIP Address
user_data_is_jailbrokenBooleanIIs Jailbroken
user_data_kindle_idStringKindle ID
user_data_languageStringLanguage
user_data_limit_ad_trackingBooleanLimit Ad Tracking
user_data_modelStringModel
user_data_oaidStringHuawei OAID
user_data_osStringOS
user_data_os_versionStringOS Version
user_data_os_version_androidStringOS Version (Android)
user_data_past_cross_platform_idsArrayStringPast Cross Platforms IDs
user_data_platformArrayStringPlatform
user_data_prob_cross_platform_idsArrayStructProbabilistic Cross Platform IDs
user_data_roku_ridaStringRoku Device ID
user_data_screen_heightIntegerScreen Height
user_data_screen_widthIntegerScreen Width
user_data_sdk_versionStringSDK Version
user_data_user_agentStringUser Agent
user_data_windows_aidStringWindows AID
user_data_device_localeStringDevice Locale
user_data_carrier_nameStringCarrier Name
user_data_opted_in_statusStringWhether user opted in to ATT or not
user_data_app_storeStringThe app store the user downloaded from

Cthulhu Filter Specification

Cthulhu is a prefix notation syntax written in JSON for specifying filters on records (usually column-based records).

Purpose
Easily parses into an abstract syntax tree.

Glossary
any - any valid json basic value (number, string)
... - previous item in a list can repeat as many times as necessary

NameSpecExampleSQL Equivalent
eq["eq",<column:string>,
<value:any>]
["eq","x", 1]x= 1
gt["gt",<column:string>,
<value:any>]
["gt","x", 1]x> 1
gte["gte",<column:string>,
<value:any>]
["gte","x", 1]x >= 1
lt["lt",<column:string>,
<value:any>]
["lt","x", 1]x< 1
lte["lte",<column:string>,
<value:any>]
["lte","x", 1]x <= 1
like["like",<column:string>,
<value:regex>]
["like", "x", ". *foobar"]x LIKE "%
foobar"
between["between",<column:string>,
<lower:any>,
<upper:any>]
["between", "x",1, 2]x
BETWEEN
1 AND 2x >= 1 AND x <= 2
In["in", <column: string>, <value: any>, ...]["in","x", 1,2, 3]x IN (1,2,3)
and["and", , ...]["and",["gt","x", 1],["lt","x", 2]]x> 1 AND x < 2
or["or", , ...]["or",["eq","x", 1],["eq",
"x", 2]]
x = 1 OR x= 2
not["not",]["not",["eq","x", 1]]x != 1
array_contains["array_contains", , ]["array_contains","last_attributed_touch_data_tilde_tags","Share"]array_contains(array(1, 2, 3), 2)

Additional Examples

FilterMeaning
["eq","last_attributed_touch_data_dollar_3p","a_tiktok_ads"]Where last_attributed_touch_data_dollar_3p equals a_tiktok_ads.
["eq","name","PURCHASE"]Where name equals PURCHASE.
["or",["eq","name","store_page"],["eq","name","store_category_page"],["eq","name","dynamic_home_page"]]Where name equals store_page, store_category_pay, or dynamic_home_page.
["and",["eq","last_attributed_touch_data_dollar_3p","a_google_adwords"],["not",["eq","last_attributed_touch_data_tilde_external_touch_id",""]]]Where last_attributed_touch_data_dollar_3p equals a_google_adwords, and last_attributed_touch_data_tilde_external_touch_id is not empty.